Pentaho:组合查找/更新不会处理源中的所有行

时间:2018-05-23 12:44:18

标签: pentaho-spoon pentaho-data-integration

我正在使用Pentaho Data Integration进行SCD类型1转换。我正在使用组合查找/更新转换来生成代理键值(插入时)。提交大小为100000,缓存大小为99999.我的源表有19763行,当我运行作业将数据加载到目标(维度表)时,组合查找/更新每次只处理10000/19763行。

如何让它处理源表中的所有记录(19763 enter image description here)????

2 个答案:

答案 0 :(得分:0)

终于!!!!!!!!!我找到了答案。这很简单。点击编辑 - >设置 - >其他 - >行集中的行数 - 将其从10000更改为来自源的所需记录数。对我来说,该值设置为10000,因此它只用于将10000条记录写入目标维度表。我将它改为百万,现在我将所有19763条记录都记录在目标表中。

答案 1 :(得分:0)

它接缝你正在进行增量更新。有一个名为Merge Rows (Diff)的特殊步骤,用于比较两个流并判断它们是否存在于两个流中以及它们是否已更改。

合并两个流,参考流(当前数据)和比较流(新数据)。该行合并并标记为:

  • 相同在两个流中都找到了密钥,要比较的值是相同的;
  • 已更改在两个流中都找到了密钥,但一个或多个值不同;
  • 在参考流中找不到密钥;
  • 已删除在比较流中找不到密钥。

必须先对两个流进行排序才能合并。您可以在sql查询中执行此操作,但最好放置一个明确的Sort row步骤,否则进程将在读取1000条记录后停止,或者行集限制中的任何内容(接缝熟悉?)。

然后使用Swich/Case步骤将流引导到相应的操作。

最好的实践"模式如下,其中我添加了第一步以获得最大日期,以及构建代理键的步骤。

enter image description here

这种模式已经证明了多年来更快。实际上,它避免了非常慢Database lookup(按行进行一次db完全搜索)并减少使用慢Insert/Update步骤(3访问db:一次获取记录,一次更改值和一个存储它)。排序(可以在流中预先准备)非常有效。