Talend tMap如何获取两张输入表的全部非匹配拒绝行?
Talend tMap关联表无法获取表2非匹配行的解决方法
问题描述
- 两张输入表通过ID列关联,需输出两个数据集:
- 匹配数据:内连接结果,即两边ID匹配的行
- 非匹配数据:包含表1、表2中所有ID未匹配的行
- 当前异常:仅能提取表1的非匹配行(ID:4=Chewbacca),无法获取表2的非匹配行(ID:5=Kenobi)
作业配置截图
- 输入表截图:

- 当前输出截图:

- 期望输出截图:

- Talend完整作业截图:

- tMap配置截图:

解决方法
1. 修改tMap连接类型
将当前的左连接(Left Join)改为全外连接(Full Outer Join),这样tMap会保留两张表中所有未匹配的行,而不仅仅是左表的。
2. 配置输出分支过滤条件
在tMap中设置两个输出分支的过滤规则:
- 匹配数据分支:添加过滤条件
table1.ID != null && table2.ID != null,仅保留两边ID都存在的匹配行。 - 非匹配数据分支:添加过滤条件
table1.ID == null || table2.ID == null,捕获任意一边ID缺失的非匹配行。
3. 补全字段映射默认值
对于非匹配分支中,来自未匹配表的字段(比如表2非匹配时的表1字段),设置默认值(如""或null),避免因字段为空导致数据被过滤或报错。
内容的提问来源于stack exchange,提问作者mlaus
相关产品推荐
相关产品推荐

