我有一份非常简单的工作,有4个“联系”记录,其中2个有相同的电子邮件地址
现在我尝试查找记录具有相同的电子邮件记录。所以我加载了两次联系人记录,然后将它们附加到tmap,并使用查找来匹配emailaddress。使用过滤器表达式,我确保不将记录与自己进行比较。
现在的结果是,只有1个重复的电子邮件被标记为“重复”,而其他记录则不匹配。有人知道为什么吗?
答案 0 :(得分:1)
这是因为:
唯一匹配选项用作最后一个匹配。第一场比赛和 所有匹配选项都以命名方式运行。
因此,如果我们删除输入过滤器row1.id!=row2.id
并刚刚离开加入2个流并显示它们,我们将得到:
|=-+------------------+----+-----------------=|
|id|mail |id_1|mail_1 |
|=-+------------------+----+-----------------=|
|c1|some@mail.com |c1 |some@mail.com |
|c2|other@mail.com |c2 |other@mail.com |
|c3|identical@mail.com|c4 |identical@mail.com|
|c4|identical@mail.com|c4 |identical@mail.com|
'--+------------------+----+------------------'
请注意,查找流的最后两行没有行c3,因为Talend获取了匹配identical@mail.com
的最后一行,即c4。
现在,如果我们按row1.id!=row2.id
过滤它,我们将只得到你得到的第三行:
|=-+------------------+-----------=|
|id|mail |isDuplicated|
|=-+------------------+-----------=|
|c1|some@mail.com |false |
|c2|other@mail.com |false |
|c3|identical@mail.com|true |
|c4|identical@mail.com|false |
'--+------------------+------------'
我们只使用一个tMap可以通过启用all match
选项获取所有唯一邮件行和所有重复行。
|=-+------------------+----=|
|id|mail |isDup|
|=-+------------------+----=|
|c1|some@mail.com |false|
|c2|other@mail.com |false|
|c3|identical@mail.com|false|
|c3|identical@mail.com|true |
|c4|identical@mail.com|true |
|c4|identical@mail.com|false|
'--+------------------+-----'
然后我们可以过滤此输出以获得除初始流之外的重复行,以填充您的确切要求我不认为我们有义务再次加入此输出,如下所示:
获得此输出:
.--+------------------.
| unique |
|=-+-----------------=|
|id|mail |
|=-+-----------------=|
|c1|some@mail.com |
|c2|other@mail.com |
|c3|identical@mail.com|
|c4|identical@mail.com|
'--+------------------'
.--+------------------.
| duplicated |
|=-+-----------------=|
|id|mail |
|=-+-----------------=|
|c3|identical@mail.com|
|c4|identical@mail.com|
'--+------------------'
.--+------------------+------------.
| isDuplicated |
|=-+------------------+-----------=|
|id|mail |isDuplicated|
|=-+------------------+-----------=|
|c1|some@mail.com |false |
|c2|other@mail.com |false |
|c3|identical@mail.com|true |
|c4|identical@mail.com|true |
'--+------------------+------------'