首页 > 解决方案 > 使用特定逻辑过滤 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的条件匹配到一个数据集中。见下图。event2event1

我想过滤这些行,以便在同一用户中event1event2对于同一用户没有重复,并且每个event1都有最接近的event2(尚未用于另一个event1- 因为没有重复)。

sequence for paul:

event1(1) - event1(2) - event2(1) - event2(2) - event1(3) - event2(3)

pairs:

event1(1)   event1(2)   event1(3)
event2(1)   event2(2)   event2(3)

所以结果看起来像:

event1, event2, user
1, 1, paul
2, 2, paul
3, 3, paul
1, 1, michael
1, 1, karla

event1(对于and , id 实际上并不相同event2,它们是大整数。

我尝试了 tSortRow 和 tUniqRow 的组合,但它不起作用。

我想我需要某种循环,它迭代event1,过滤最接近的行event2,将其存储在结果集中并从原始数据集中删除event1它最接近的,以便下一个过滤另一个,第二个作为最接近的匹配。event2event1event2

我不知道这是否可以通过组件来完成,或者我是否需要 tJavaFlex 中的 java 代码,例如

标签: filtertalend

解决方案


推荐阅读