如何根据条件过滤行,如果不满足条件,在 Talend 中抓取另一行?

How to filter rows based on a condition and if the condition isn't met, grab another row in Talend?

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

我会进一步解释。我有一个来自 Excel 文件的数据流,每一行都有最后一列中的两个词之一。它将包含“Open”或“Current”。

假设我有一个如下所示的输入:

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

而且目标是只抓一个人一次。每个人都有自己的唯一 ID 作为他们的 SSN。如果那个人 OpenCurrent 都存在,我想抓取 Open 行。如果只有 Current 存在,那就抓住它。 所以最终输出应该是这样的:

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

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

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

以下是您的操作方法:

首先将数据按Name、Type降序排序(这很重要,这样对于每个人来说,Open记录在最上面);然后在 tMap 中像这样过滤它:

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

如果这是我们第一次看到这个名字,就让记录通过。