Talend 中的条件映射

Conditional Mapping in Talend

我在 Talend 中创建了一个简单的作业,它将在 2 excel sheet 秒之间对数据执行内部联接,然后将结果转储到输出 excel sheet。下图可以很好地说明这一点:-

tMap中使用的映射是:-

然而,现在对我来说额外的挑战是,只有当该行中的列值不为 NULL 时,我才必须执行此映射。例如,有一个映射 row1.RECID = row2.RECID,但只有当 row2.RECID 不为 NULL 时才合法。 我如何在 Talend 中实现这一点?我已经对 tMap 表达式进行了很多实验,但无法正确处理..
这是一个小样本输入及其相应的预期输出。 假设我的输入有值:- v1、v2、v3、v4
1、A、O、3
2、B、X、4
3、C、X、4

并且查找具有值

v1、v2、v3
1、A、O、3
2, 空, X, 4
3、空、C、4
2,null,X,null

那么输出应该是:-
v1,v2,v3
1,A,O,3
2,B,X,4
2,B,X,4

尝试映射 row1 中的最大值,将 row2 与左外连接。

我想要仅在第 1 行和第 2 行中的值,您可以为此在第 2 行中添加一个过滤器(但我想这不是您想要的)

在加入您的输入流之前,您必须拒绝具有空值的行,我已经根据给定的简单数据创建了一个映射。

Talend 确实有一个更优雅的选项,允许在多列上过滤您的数据。使用 tSchemaComplianceCheck 组件,过滤掉 null 和空值就像单击几个复选框一样简单。这允许您使用自己的模式来检查空值和空值并将它们过滤掉。错误行进入拒绝流程,您可以选择对其进行处理。如果您不想捕获和处理拒绝品,您可以简单地忽略它们。您的主要流程将只有通过合规性检查的记录。以下是一些使用技巧:

  • 在 tSchemaComplianceCheck 组件 --> 基本设置屏幕中单击 自定义定义,它会显示每一列。确保未选中 Nullable 否则它将允许空值通过。

  • 在“高级设置”选项卡中选中将所有空字符串视为 NUll。这将与前面的步骤结合使用以过滤掉 null 和 empty。

  • 在您的 Excel 组件中,单击“高级设置”选项卡,然后选中遇到空行时停止阅读

下面是显示基本流程和设置的屏幕截图。你会 link 到 tMap 而不是 tLogRow。如果我正确理解了您的问题,我想您会发现这是 Talend 中的理想解决方案。