Java 如何在Pentaho数据不等化(Kettle)中返回不匹配的行?

Java 如何在Pentaho数据不等化(Kettle)中返回不匹配的行?,java,pentaho,lookup,etl,kettle,Java,Pentaho,Lookup,Etl,Kettle,我正在寻找在Pentaho数据集成中执行SSIS查找的解决方案。 我将试着用一个例子来解释: 我有两张桌子A和B。 表A中的数据如下: 1. 2. 3. 4. 5. 表B中的数据如下: 3. 4. 5. 6. 7. 在我的过程之后: A中的所有行和B中的所有行==>都将插入B B中的所有行和A中的所有行==>都将被删除到A中 这里是我的最后一张表B: 3. 4. 5. 1. 2. 有人能帮我吗?在Pentaho中,直接步骤不可用。有很多方法可以做到这一点 =>编写sql以实现您的解决方案。如果编

我正在寻找在Pentaho数据集成中执行SSIS查找的解决方案。 我将试着用一个例子来解释: 我有两张桌子A和B。 表A中的数据如下: 1. 2. 3. 4. 5. 表B中的数据如下: 3. 4. 5. 6. 7. 在我的过程之后: A中的所有行和B中的所有行==>都将插入B B中的所有行和A中的所有行==>都将被删除到A中 这里是我的最后一张表B: 3. 4. 5. 1. 2.
有人能帮我吗?

在Pentaho中,直接步骤不可用。有很多方法可以做到这一点

=>编写sql以实现您的解决方案。如果编写sql,执行速度也会更快

=>使用过滤步骤也可以实现


谢谢。

确实有一个步骤可以做到这一点,但它不是单独做到的。这是
合并行(diff)
步骤,它有一些要求。在您的例子中,A是“比较”表,B是“参考”表

首先,两个输入(在您的例子中是A和B中的行,在我的例子中是Dev和Prod)都需要按键值排序。在步骤中,指定要匹配的关键字段,然后指定要比较的值字段。该步骤向输出中添加一个字段(默认情况下称为“flagfield”)。比较每一行后,该字段将被赋予四个值之一:“新建”、“更改”、“删除”或“相同”。注意,在下面的示例中,我有明确的排序步骤。这是因为我的数据库的排序方案与PDI的不兼容,要使这一步起作用,您的数据必须符合PDI的排序顺序。你可能不需要这些

您可以使用
合并后同步
步骤来应用已识别的更改。在此步骤中,指定与insert、update和delete相对应的标志字段和值。仅供参考,“高级”选项卡上指定了这些内容,必须填写这些内容才能使步骤生效


对于像您的示例这样的非常小的表,我倾向于使用
表输出
步骤进行截断和完全加载,但是如果您的表很大,并且更改的数量相对较小(您是说没有任何步骤返回不匹配的行(以两个表作为源),比如“SSIS中的查找”或“Talend中的TMAP”是的,这是正确的,但在pentaho中,该类型的步骤不可用。您的要求可以执行,但有点困难,但没有直接的“查找”步骤。您完全可以满足您的要求。不是一个步骤,但合并行(diff)和合并后同步的组合正好可以做到这一点。请参见@Brian.D.Myers回复。