Filter 使用特定逻辑筛选talend中的行
我在tHashInput组件中有这样一个数据集:Filter 使用特定逻辑筛选talend中的行,filter,talend,Filter,Talend,我在tHashInput组件中有这样一个数据集: event1, event2, user 1, 1, paul 1, 2, paul 2, 1, paul 2, 2, paul 3, 3, paul 1, 1, michael 2, 1, michael 1, 1, karla 事件在其列中按照发生顺序顺序顺序排列,这意味着具有更高的id发生的事件。user-列将它们匹配到一个数据集中,条件是event2发生在event1之后。见下图 我想筛选这些行,以便同一用户的event1和event2
event1, event2, user
1, 1, paul
1, 2, paul
2, 1, paul
2, 2, paul
3, 3, paul
1, 1, michael
2, 1, michael
1, 1, karla
事件在其列中按照发生顺序顺序顺序排列,这意味着具有更高的id
发生的事件。user
-列将它们匹配到一个数据集中,条件是event2
发生在event1
之后。见下图
我想筛选这些行,以便同一用户的event1
和event2
中没有重复项,并且每个event1
都有最接近的event2
(因为没有重复项,所以还没有将其用于另一个event1
)
因此,结果如下所示:
event1, event2, user
1, 1, paul
2, 2, paul
3, 3, paul
1, 1, michael
1, 1, karla
(实际上,event1
和event2
的ID不同,它们是大整数
我尝试了tSortRow和tUniqRow的组合,但它不起作用
我想我需要某种循环,它迭代event1
,用最接近的event2
过滤行,将其存储在结果集中,并从原始数据集中删除event1
及其最接近的event2
,以便下一个event1
过滤另一行,第二个event2
作为其最接近的match
我不知道这是否可以通过组件实现,或者我是否需要tJavaFlex中的java代码,例如如果第2,2,Paul行不存在,会发生什么?结果中没有event1=2行?或者一行有2,1,Paul(即使event1=1使用)?感谢您提出的问题:根据定义,同一用户的一个事件1和两个事件2不会发生。对于第二个问题:如果有两个事件1和一个事件2,则过滤事件1(1)-事件2(1)(一般逻辑)并丢弃第二个事件1(2)。对不起,如果我不清楚,我的问题是针对只有1,1,paul/1,2,paul/2,1,paul的情况。那么应该发生什么?好的,那么定义是event1必须在event2之前发生。这意味着在您描述的情况下,paul将有以下序列:
event1(1)-event1(2)-event2(1)-event2(2)
然后还会有2,2,Paul,否则就不会发生。然后我想保留1,1,Paul和2,2,Paul。如果第2,2,Paul行不存在该怎么办?结果中没有event1=2的行?或者有2,1,Paul的行(即使event1=1使用该行)?感谢您提出的问题:根据定义,同一用户的一个事件1和两个事件2不会发生。对于第二个问题:如果有两个事件1和一个事件2,则过滤事件1(1)-事件2(1)(一般逻辑)并丢弃第二个事件1(2)。对不起,如果我不清楚,我的问题是针对只有1,1,paul/1,2,paul/2,1,paul的情况。那么应该发生什么?好的,那么定义是event1必须在event2之前发生。这意味着在您描述的情况下,paul将有以下序列:event1(1)-event1(2)-event2(1)-event2(2)
然后也会有2,2,保罗,这是不可能发生的。然后我想保留1,1,保罗和2,2,保罗。
event1, event2, user
1, 1, paul
2, 2, paul
3, 3, paul
1, 1, michael
1, 1, karla