Pentaho 维度查找/更新

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)

请让我知道更多详细信息以及我错过的任何步骤或设置。

mzy*_*mzy 5

用于构建SCD II时的步骤要点Dimension Lookup / Update(用于更新模式) 表是:

  • 键 - 关键字段:您可以在此处定义id源数据中的列(我猜它Key来自您的 CSV 文件)。它用于查找先前存储的具有相同的行Key,因此该步骤可以将传入行与已存储在 SCD II 中的行进行比较。并评估该行是否已更改。
  • 技术关键字段:技术关键是您需要添加到表中的额外新列(例如technical_key)。在 PDI 记录流中也是新的(名称与表中的名称相同technical_key)。将其设置为auto increment. 当向表中插入任何新行时,它会自动递增,并且其值在表中是唯一的(因此可以用作表的主键)。
  • 流日期字段:通常在这里放置last_updated_date源数据中的列,每次更新源数据中的行记录时,该列的值都会更改为实际日期。或者您可以使用执行转换时的实际时间(从 .step 获得Get System Infosystem date
  • 日期范围开始字段、表日期范围和: SCD II 中的每一行。表需要有有效期(行数据内的范围有效)。此期间由两个日期定义 - 开始日期 ( Date range start field) 和结束日期 ( Table date range end)。这两个字段设置为INOut(表列的名称)。该步骤将使用“ ”和值自动确定它们的值(设置 和Min. year = 1900):Max. year = 2199Range start, endStream Datefield

    • 当行(由 标识Key)是新行时:
      • Key = 1; technical_key = 123; In = 1900-01-01; Out = 2199-12-31; Name = X
    • 例如,第二天。更新同一行(流日期字段的值 = '2015-03-13'):
      • Key = 1; technical_key = 123; In = 1900-01-01; Out = 2015-03-13; Name = X
      • Key = 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 throughName值“A”):
      • Key = 1; technical_key = 123; In = 1900-01-01; Out = 2015-03-13; Name = A
      • Key = 1; technical_key = 158; In = 2015-03-13; Out = 2199-12-31; Name = A

Pentaho 维度查找/更新