如何使用pentaho数据集成获取唯一记录

时间:2015-02-05 07:23:31

标签: mysql sql-server pentaho kettle pentaho-design-studio

我的log_table包含sql

中的state,region,district,timestamp列

服务器。

ID     state     region     district     timestamp
--     -----     ------     --------     ---------
1       GJ        RE056       DI137      2014-02-05 09:00:00.257
2       CA        RE027       DI154      2014-02-04 14:00:00.183 
3       GJ        RE056       DI137      2014-12-09 16:00:00.257

我想将这些记录加载到具有唯一记录的mysql中的另一个表中,并且在将数据从sql server加载到mysql时,现有数据不应插入到mysql中的新表中,仅每日更新 记录应该加载到没有重复记录的新表中。在这个问题上帮助我如何使用pentaho数据集成。

2 个答案:

答案 0 :(得分:0)

我假设timestamp列代表源数据库(sql server)中一行的last_updated_timestamp

如果您的目标是每天运行转换并且您希望源数据库中只有new or updated条记录将加载到目标(mysql)数据库,则需要将timestamp存储到目标数据库中(例如表log_target),转换步骤可以是:

  • 表格输入(目标数据库):从表格timestamp获取MAX log_target
    • SELECT COALESCE(MAX(timestamp), '1970-01-01 00:00:00') AS max FROM log_target
  • 表输入(源数据库):log_table中选择更新的数据
    • 步骤设置:插入数据步骤(从上一步获取数据);替换脚本中的变量? (true)
    • SELECT * FROM log_table WHERE (timestamp > ?)
  • 处理您的数据
  • 表输出或插入/更新(目标数据库):将输出数据存储到log_target表。不要忘记存储timestamp值。

答案 1 :(得分:0)

表格输入 -> 排序行(州、地区、地区、时间戳降序) -> 唯一行 -> 插入/更新。

将行时间戳降序排序将帮助您在删除重复项后保留最后修改的记录。