使用 Pentaho Kettle 实现 SCD Type 2 (Pentaho Data Integration 5.2)

Posted

技术标签:

【中文标题】使用 Pentaho Kettle 实现 SCD Type 2 (Pentaho Data Integration 5.2)【英文标题】:Implementing SCD Type 2 using Pentaho Kettle (Pentaho Data Integeration 5.2) 【发布时间】:2015-01-29 10:51:31 【问题描述】:

我有一个表格,计划,列p_id,p_name,start_date,end_date,last_updated

问题陈述:当客户从plan A更改为plan B时,其对应plan A的end_date在表中更新,同时将plan B的新记录插入表中。

我正在创建一个数据仓库,其中“计划”是我的维度之一。现在,对于客户 A,我想在维度表中维护他的计划历史记录。我知道,我们可以使用 SCD Type 2 维度表来解决这个问题。我正在使用 Pentaho 数据集成工具 5.2。我正在尝试使用工具中提供的“dimension lookup/update”功能来解决这个问题。但问题是我想从我的计划表中插入“start_date”和“end_date”的值,而不是“维度查找/更新”中设置的值。因此,每当客户更改其计划时,其 end_date 应在维度表中更新,同时计划 B 的新记录应插入同一客户的表中。

谁能建议解决这个问题的最佳方法,即 start_date 和 end_date 的值应该在维度表中更新,这些值来自我的计划表,而不是 pentaho 水壶退化的原因?

【问题讨论】:

您能详细解释一下您的源和目标 (DWH) 数据吗?否则,你的目标对我来说不是 100% 明确的.. 【参考方案1】:

使用维度查找/更新步骤,您可以指定一个日期字段作为时间戳来分隔版本。如果不这样做,它将使用当前时间戳。

示例:一条记录​​有一组属性和一个特定的时间戳,我们称它为 update_date,新记录从该日期开始有效。

像往常一样填写维度查找/更新步骤,在更新类型上将要跟踪的属性设置为“插入”,但在流日期字段中键入 update?date 字段名称。以前的版本将使用该值作为 date_to,而新版本将使用它作为 date_from。

【讨论】:

【参考方案2】:

您可以使用更新步骤。这将使您可以灵活地使用您喜欢的值/字段更新任何列。

【讨论】:

感谢您的建议....但是有一个问题...我们可以使用此工具实现 SCD Type 2 Dimension table 吗?另外,是否可以使用此工具维护记录的版本控制? 是的!这就是维度查找/更新步骤所做的。见:wiki.pentaho.com/display/EAI/Dimension+Lookup-Update

以上是关于使用 Pentaho Kettle 实现 SCD Type 2 (Pentaho Data Integration 5.2)的主要内容,如果未能解决你的问题,请参考以下文章

Pentaho Kettle 中的 while 循环实现

除了 pentaho 中的插入/更新步骤之外,是不是有任何步骤或逻辑可以保持 SCD 类型 1?

kettle学习之--缓慢变化维度(SCD)

Kettle(Pentaho)实现web方式远程执行job或transformation

如何在 pentaho Kettle 中为生成的键表实现键查找

使用 StAX / Kettle (Pentaho) 读取 XML 文件