Pentaho Dimension查找/更新

时间:2015-03-13 05:45:43

标签: csv pentaho etl kettle

我见过Dimension Lookup/Update documentation here和其他一些博客。但我似乎无法得到一个清晰的想法。 我有一个具有以下结构的表:

 Key Name Code Status IN Out Active

key name code status active来自csv文件。 我需要对scd type2使用Dimension查找/更新步骤并填充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: 

请告诉我更多详情以及我必须错过的任何步骤或设置。

1 个答案:

答案 0 :(得分:4)

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

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

    • 当行(由Key标识)是新的时:
      • Key = 1; technical_key = 123; In = 1900-01-01; Out = 2199-12-31; Name = X
    • E.g。明天。更新了同一行(Stream Datefield的值='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以及此选项。
    • 当您对属性的历史记录(SCD I.)不感兴趣时​​,可以使用Punch through选项。它会覆盖具有相同Key的行中的所有匹配项。例如。 Punch through上的Name(新值'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 Dimension lookup/update