Csv Pentaho维度查找/更新
我看了一些其他的博客。但我似乎不太清楚。 我有一个具有以下结构的表:Csv Pentaho维度查找/更新,csv,pentaho,etl,kettle,Csv,Pentaho,Etl,Kettle,我看了一些其他的博客。但我似乎不太清楚。 我有一个具有以下结构的表: Key Name Code Status IN Out Active 密钥名称代码状态激活来自csv文件。 我需要对scd类型2使用维度查找/更新步骤,并填充IN/Out 设置连接详细信息后, 我已将键设置为KEY,并将字段设置为所有其他字段,选项为上次插入日期(不将流字段作为源)。如果任何其他字段发生更改,我需要在数据库中创建一个新行。该行将具有相同的键和更新的详细信息,其中out设置为无穷大,而in设置为当前系统日期
Key Name Code Status IN Out Active
密钥名称代码状态激活
来自csv文件。
我需要对scd类型2使用维度查找/更新步骤,并填充IN/Out
设置连接详细信息后,
我已将键设置为KEY
,并将字段设置为所有其他字段,选项为上次插入日期(不将流字段作为源)
。如果任何其他字段发生更改,我需要在数据库中创建一个新行。该行将具有相同的键和更新的详细信息,其中out
设置为无穷大,而in
设置为当前系统日期
日期范围开始字段设置为数据库的列中的,表日期范围结束设置为列中的
我不理解这个技术密钥的概念,因为密钥也来自csv文件
单击“预览”时出现错误:
DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC:
请让我知道更多详细信息以及我必须错过的任何步骤或设置。用于构建SCD II时维度查找/更新
步骤(在更新模式下使用)的要点。下表为:
- Keys-Key字段:在这里,您可以从源数据定义一个
id
列(我猜它的Key
来自CSV文件)。它用于查找以前存储的具有相同键的行
,因此该步骤可以将传入行与SCD II中已存储的行进行比较。并评估行是否已更改
- 技术键字段:技术键是需要添加到表中的额外新列(例如
技术键
)。在PDI记录流中也是新的(将其命名为与表中相同的technical\u key
)。将其设置为自动递增
。当向表中插入任何新行时,它将自动递增,并且其值在表中是唯一的(因此可以用作表的主键)李>
- Stream Datefield:通常在这里,您会从源数据中放入
last\u updated\u date
列,每当源数据中的行记录更新时,该列的值都会更改为实际日期。或者,您可以使用执行转换时的实际时间(从Get System Info
System date
步骤获得)
- 日期范围开始字段、表格日期范围和:SCD II中的每一行。表需要有有效期(行数据中的范围有效)。此期间由两个日期定义-开始(
日期范围开始字段
)和结束日期(表格日期范围结束
)。这两个字段设置为IN
和Out
(表列名称)。该步骤将使用“范围开始、结束
”和流数据字段
值自动确定其值(设置最小年份=1900
和最大年份=2199
):
- 当行(由
键
标识)为新行时:
Key=1;技术密钥=123;In=1900-01-01;Out=2199-12-31;Name=X
- 例如,第二天。更新了同一行(Stream Datefield的值='2015-03-13'):
Key=1;技术密钥=123;In=1900-01-01;Out=2015-03-13;Name=X
Key=1;技术密钥=158;In=2015-03-13;Out=2199-12-31;名称=A
- 字段-更新字段:此处定义要存储的所有数据字段:
Name code Status Active
。作为维度更新的类型
设置插入
(用于SCD II.属性)
- 无法使用上次插入的
日期(不使用流字段作为源)
,因为它仅将实际日期时间写入特定的维度字段
,并且您不能随此选项一起定义流字段
- 当您对属性的历史记录(SCD I)不感兴趣时,可以使用
打孔
选项。它用相同的键
覆盖行中的所有引用。例如,Name
上的打孔(新值“A”):
Key=1;技术密钥=123;In=1900-01-01;Out=2015-03-13;名称=A
Key=1;技术密钥=158;In=2015-03-13;Out=2199-12-31;名称=A