如何在Azure Data Factory Dataflow中实现Left Anti与Right Anti连接?
在Azure Data Factory数据流中实现Left Anti/Right Anti连接的方法
Azure Data Factory数据流确实没有直接提供Left Anti或Right Anti连接的选项,但可以通过以下两种方式实现和SQL中等价的效果:
方法一:Left Join + 过滤空值
实现Left Anti Join
- 先对两个数据集做Left Join:将需要保留不匹配记录的数据集设为左表,关联数据集设为右表,配置好关联键
- 添加过滤转换:筛选右表的关联键(或任意必定非空的字段)满足
isNull()的记录,此时得到的就是左表中没有匹配右表的所有记录,和SQL的LEFT ANTI JOIN完全等价
实现Right Anti Join
- 只需调换两个数据集的位置:把原本要作为右表的数据集设为左表,原左表设为右表,重复上述Left Anti的操作,结果就是原右表中无匹配原左表的记录,对应SQL的
RIGHT ANTI JOIN
方法二:使用Exists转换(更简洁)
实现Left Anti Join
- 在数据流中添加Exists转换,选择主数据集(要保留不匹配项的数据集)作为输入
- 在Exists配置面板中,选择关联数据集,设置好关联条件,然后勾选Does not exist选项,直接就能得到主数据集中不存在于关联数据集的记录,效果和SQL的
LEFT ANTI JOIN一致
实现Right Anti Join
- 把主数据集和关联数据集的位置互换,同样选择Does not exist选项,即可得到原关联数据集中无匹配原主数据集的记录,对应SQL的
RIGHT ANTI JOIN
举个简单的SQL对比例子:
SQL中的Left Anti写法:
SELECT * FROM TableA WHERE NOT EXISTS (SELECT 1 FROM TableB WHERE TableA.id = TableB.id)
对应数据流里用Exists转换,选TableA作为输入,关联TableB的id字段,选择Does not exist,输出结果完全相同。
内容的提问来源于stack exchange,提问作者AzSurya Teja
相关产品推荐
相关产品推荐

