2017-09-13 102 views
0

我在不同的數據庫中有2個用戶表,我想從這些表中只獲得唯一的行。刪除不同數據庫中2個表的重複行

在以下示例中,我需要沒有重複名稱的電子郵件列表。

我正在使用Pentaho DI水壺。

表從數據庫從用戶數據庫2

ID | Name  | Email 
--- | ----------- | ------------- 
1 | Jonh Stott | [email protected] 
--- | ----------- | ------------- 
2 | Jonh Jonh | [email protected] 
--- | ----------- | ------------- 
3 | Ayra Stark | [email protected] 

希望的結果1

ID | Name  | Email 
--- | ----------- | ------------- 
1 | Jonh Snow | [email protected] 
--- | ----------- | ------------- 
2 | Sansa Stark | [email protected] 
--- | ----------- | ------------- 
3 | Ayra Stark | [email protected] 

表用戶

ID | Name  | Email 
--- | ----------- | ------------- 
1 | Jonh Snow | [email protected] 
--- | ----------- | ------------- 
2 | Sansa Stark | [email protected] 

回答

0

據我瞭解您的問題,您只需保留DB1聯合DB2中不重複的電子郵件?

那麼,按照你的邏輯:獲得的數據(一個Input table由DB連接),計算記錄每個電子郵件(Memory Group byFilter數目和在該郵件以計數大於1

使用Memory Group by,它不需要排序。在Group field把關鍵:email。並在AggregatesNumber of rows(在類型下拉列表中)和First Value(或Last ValueName,否則此列將從流中消失。

Add a sequence如果您需要在輸出上創建ID。

enter image description here

0
  1. 執行UNION ALL(簡單地加入這兩個文件到虛擬)
  2. 執行對電子郵件的排序。
  3. 在名稱上使用UNIQUE行。
  4. 在名稱上使用流查找,其中一個輸入爲table1和第二個唯一行。
  5. 過濾id爲< 3的行,id爲isnull。