0

我有一张桌子,计划,有列p_id,p_name,start_date,end_date,last_updated

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

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

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

4

2 回答 2

2

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

示例:一条记录​​具有一组属性和一个特定的时间戳,我们将其称为 update_date ,新记录从中有效。

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

于 2015-02-02T09:39:46.257 回答
1

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

于 2015-01-29T12:00:31.133 回答