ras*_*jay 2 csv etl pentaho kettle
我在这里看到了维度查找/更新文档和其他一些博客。但我似乎无法得到一个清晰的想法。我有一个具有以下结构的表:
Key Name Code Status IN Out Active
Run Code Online (Sandbox Code Playgroud)
来自key name code status activecsv 文件。我需要对 scd type2 使用维度查找/更新步骤并填充IN/Out.
设置连接详细信息后,我已KEY 使用选项将键设置为并将字段设置为所有其他字段Date of last insert (without stream field as source)。如果任何其他字段发生更改,我需要在数据库中创建一个新行。该行将具有相同key且更新的详细信息,设置out为无穷大并in设置为当前系统日期。
日期范围开始字段设置为IN,表日期范围结束字段设置为OUT数据库列。
我不明白这个技术密钥的概念,因为密钥也来自 csv 文件。
当我点击预览时出现错误:
DB2 SQL error: SQLCODE: -407, SQLSTATE: 23502, SQLERRMC:
Run Code Online (Sandbox Code Playgroud)
请让我知道更多详细信息以及我错过的任何步骤或设置。
用于构建SCD II时的步骤要点Dimension Lookup / Update(用于更新模式) 。表是:
id源数据中的列(我猜它Key来自您的 CSV 文件)。它用于查找先前存储的具有相同的行Key,因此该步骤可以将传入行与已存储在 SCD II 中的行进行比较。并评估该行是否已更改。technical_key)。在 PDI 记录流中也是新的(名称与表中的名称相同technical_key)。将其设置为auto increment. 当向表中插入任何新行时,它会自动递增,并且其值在表中是唯一的(因此可以用作表的主键)。last_updated_date源数据中的列,每次更新源数据中的行记录时,该列的值都会更改为实际日期。或者您可以使用执行转换时的实际时间(从 .step 获得Get System Info)system date。日期范围开始字段、表日期范围和: SCD II 中的每一行。表需要有有效期(行数据内的范围有效)。此期间由两个日期定义 - 开始日期 ( Date range start field) 和结束日期 ( Table date range end)。这两个字段设置为IN和Out(表列的名称)。该步骤将使用“ ”和值自动确定它们的值(设置 和Min. year = 1900):Max. year = 2199Range start, endStream Datefield
Key)是新行时:
Key = 1; technical_key = 123; In = 1900-01-01; Out = 2199-12-31; Name = XKey = 1; technical_key = 123; In = 1900-01-01; Out = 2015-03-13; Name = XKey = 1; technical_key = 158; In = 2015-03-13; Out = 2199-12-31; Name = A字段 - 更新字段:您可以在此处定义要存储的所有数据字段:Name Code Status Active。作为一个Type of dimension update集合Insert(用于 SCD II. 属性)。
Date of last insert (without stream field as source)使用,因为它只是简单地将实际日期时间写出到特定的位置dimension field,并且您不能stream field与此选项一起定义。Punch through当您对属性的历史记录不感兴趣时可以使用该选项 (SCD I.)。它会覆盖具有相同的行中出现的所有情况Key。例如(Punch through新Name值“A”):
Key = 1; technical_key = 123; In = 1900-01-01; Out = 2015-03-13; Name = AKey = 1; technical_key = 158; In = 2015-03-13; Out = 2199-12-31; Name = A