在 Pentaho 中实现纯 SCD 类型 6
Implementing Pure SCD Type 6 in Pentaho
我有一个有趣的任务是创建一个 Kettle 转换来加载一个 table,这是一个 Pure Type 6 dimension。这让我发疯
假设以下 table 结构
|CustomerId|Name|Value|startdate|enddate|
|1|A|value1|01-01-2001|31-12-2199|
|2|B|value2|01-01-2001|31-12-2199|
然后是我的输入文件
Name,Value,startdate
A,value4,01-01-2010
C,value3,01-01-2010
kettle 转换后的数据必须如下所示
|CustomerId|Name|Value|startdate|enddate|
|1|A|value1|01-01-2001|31-12-2009|
|1|A|value4|01-01-2010|31-12-2199|
|2|B|value2|01-01-2001|31-12-2199|
|3|C|value3|01-01-2010|31-12-2199|
- 检查现有数据并查找传入记录是否为 insert/update
- 然后仅为插入记录生成代理键并执行插入。
- 保留更新记录的代理键并将其作为新记录插入并为新记录分配一个开放结束日期(一个非常高的值)并关闭先前的相应记录作为新记录的开始日期 - 1
有人可以建议最好的方法吗?我只能使用维度查找更新选项看到类型 1 和类型 2
我使用 ETLT 的混合方法完成了这项工作。
我有一个有趣的任务是创建一个 Kettle 转换来加载一个 table,这是一个 Pure Type 6 dimension。这让我发疯
假设以下 table 结构
|CustomerId|Name|Value|startdate|enddate|
|1|A|value1|01-01-2001|31-12-2199|
|2|B|value2|01-01-2001|31-12-2199|
然后是我的输入文件
Name,Value,startdate
A,value4,01-01-2010
C,value3,01-01-2010
kettle 转换后的数据必须如下所示
|CustomerId|Name|Value|startdate|enddate|
|1|A|value1|01-01-2001|31-12-2009|
|1|A|value4|01-01-2010|31-12-2199|
|2|B|value2|01-01-2001|31-12-2199|
|3|C|value3|01-01-2010|31-12-2199|
- 检查现有数据并查找传入记录是否为 insert/update
- 然后仅为插入记录生成代理键并执行插入。
- 保留更新记录的代理键并将其作为新记录插入并为新记录分配一个开放结束日期(一个非常高的值)并关闭先前的相应记录作为新记录的开始日期 - 1
有人可以建议最好的方法吗?我只能使用维度查找更新选项看到类型 1 和类型 2
我使用 ETLT 的混合方法完成了这项工作。