我有一個非常簡單的工作有4個「接觸」的記錄,其中其中2具有相同的電子郵件地址不明白過濾器表達式上查找TMap中
現在我試着查找記錄具有相同的電子郵件記錄。因此,我加載聯繫人記錄兩次,然後將它們附加到tmap,並使用查找匹配電子郵件地址。使用過濾器表達式,我確保我不會將記錄與自己進行比較。
結果現在是,只有重複的電子郵件的1標有「重複」和其他記錄不匹配。有人知道爲什麼嗎?
我有一個非常簡單的工作有4個「接觸」的記錄,其中其中2具有相同的電子郵件地址不明白過濾器表達式上查找TMap中
現在我試着查找記錄具有相同的電子郵件記錄。因此,我加載聯繫人記錄兩次,然後將它們附加到tmap,並使用查找匹配電子郵件地址。使用過濾器表達式,我確保我不會將記錄與自己進行比較。
結果現在是,只有重複的電子郵件的1標有「重複」和其他記錄不匹配。有人知道爲什麼嗎?
這是因爲:
獨特的匹配選項充當最後一場比賽。第一場比賽和 所有匹配的選項功能與命名一樣。
因此,如果我們去掉輸入濾波器row1.id!=row2.id
和剛剛離開加入2流,並告訴他們,我們將得到:
|=-+------------------+----+-----------------=|
|id|mail |id_1|mail_1 |
|=-+------------------+----+-----------------=|
|c1|[email protected] |c1 |[email protected] |
|c2|[email protected] |c2 |[email protected] |
|c3|[email protected]|c4 |[email protected]|
|c4|[email protected]|c4 |[email protected]|
'--+------------------+----+------------------'
注意,最後2行查找流沒有行c3,因爲Talend提取了匹配[email protected]
即c4的最後一行。現在 如果我們濾鏡,通過row1.id!=row2.id
我們將只得到第三行是你所擁有的:
|=-+------------------+-----------=|
|id|mail |isDuplicated|
|=-+------------------+-----------=|
|c1|[email protected] |false |
|c2|[email protected] |false |
|c3|[email protected]|true |
|c4|[email protected]|false |
'--+------------------+------------'
我們所能做的僅使用一個TMAP是獲得所有獨特的郵件行和重複行的所有次數通過啓用all match
選項。
|=-+------------------+----=|
|id|mail |isDup|
|=-+------------------+----=|
|c1|[email protected] |false|
|c2|[email protected] |false|
|c3|[email protected]|false|
|c3|[email protected]|true |
|c4|[email protected]|true |
|c4|[email protected]|false|
'--+------------------+-----'
然後我們可以過濾這個輸出獲得除重複的行初始流量,來填補你的確切要求,我不認爲我們有責任再次加入這個輸出是這樣的:
要得到這個輸出:
.--+------------------.
| unique |
|=-+-----------------=|
|id|mail |
|=-+-----------------=|
|c1|[email protected] |
|c2|[email protected] |
|c3|[email protected]|
|c4|[email protected]|
'--+------------------'
.--+------------------.
| duplicated |
|=-+-----------------=|
|id|mail |
|=-+-----------------=|
|c3|[email protected]|
|c4|[email protected]|
'--+------------------'
.--+------------------+------------.
| isDuplicated |
|=-+------------------+-----------=|
|id|mail |isDuplicated|
|=-+------------------+-----------=|
|c1|[email protected] |false |
|c2|[email protected] |false |
|c3|[email protected]|true |
|c4|[email protected]|true |
'--+------------------+------------'
所以...過濾器在比賽結束後執行?我會期待相反的方向。有什麼辦法可以做我想做的事嗎? –
@WillemMulder編輯答案 – 54l3d
優秀的答案,謝謝!所以只需要確定:過濾(row1.id!= row2.id)在匹配後執行* –
什麼是你的連接設置..你可以點擊設置圖標row2 input..it應列出左外連接,內連接,唯一行所有行...使用所有行和和左外加入 – garpitmzn
@garpitmzn它在「左外連接」上。如果我切換到「所有匹配」,我得到6行返回(這是有道理的),但我只想要4,指標是否有重複的電子郵件或沒有...否則可能呢? –
是的,它應該是..你必須應用過濾器輸出數據集..你應該先刪除row1.id!= row2.id過濾器...並檢查輸出結果..下一步你應該應用過濾器測試(輸出數據集),這是在你的右側.. – garpitmzn