首页 > 解决方案 > 如何根据条件过滤行,如果不满足条件,在 Talend 中抓取另一行?

问题描述

很难为这个问题想出一个标题,所以希望这确实有意义。

我将进一步解释。我有一个来自 Excel 文件的数据流,每一行的最后一列都有两个单词之一。它将包含“打开”或“当前”。

所以假设我有一个看起来像这样的输入:

NAME | SSN  | TYPE
John | 12345| Current
Katy | 99999| Current
Sam  | 33333| Current
John | 12345| Open
Cody | 55555| Open

而且目标是只抢一个人一次。每个人都有他们唯一的 ID 作为他们的 SSN。如果两者都存在并且为那个人存在,我想抓住Open行。如果仅存在,则抓住它。所以最终的输出应该是这样的:OpenCurrentCurrent

NAME | SSN  | TYPE
Katy | 99999| Current
Sam  | 33333| Current
John | 12345| Open
Cody | 55555| Open

注意:如您所见,第一个条目John已被删除,因为他有Open一行。

我已经尝试过了,但它很草率,我认为必须有更好的方法。这是我所做的图片: Talend flow

标签: talendtalend-mdm

解决方案


以下是您的操作方法: 在此处输入图像描述

首先按名称对数据进行排序,然后按类型降序(这很重要,因此对于每个人来说,打开记录都在顶部);然后在 tMap 过滤器中像这样:
在此处输入图像描述

Numeric.sequence(row2.name, 1, 1) == 1

只有当这是我们第一次看到这个名字时才让记录通过。


推荐阅读