2017-09-13 105 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。