Pentaho:组合 lookup/update 不处理源中的所有行

Pentaho: combination lookup/update does not process all rows in the source

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

我怎样才能让它处理源 table 中的所有记录 (19763) ????

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

中获得了所有 19763 条记录

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

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

  • 相同 在两个流中都找到了密钥,并且要比较的值相同;
  • 已更改 在两个流中都找到了密钥,但有一个或多个值不同;
  • new在引用流中找不到密钥;
  • 已删除在比较流中找不到密钥。

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

然后通过 Swich/Case 步骤将流定向到适当的操作。

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

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