You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure Synapse Data Flow中动态对比两表查找缺失行的问题

解决Azure Dataflow中双向缺失记录检测的问题

问题原因

你遇到的是Exists转换的单向检查特性:默认情况下,Exists仅会检查主数据流中的记录是否存在于参照数据流中,只输出主数据流里不存在于参照的记录。

  • 当源(15条)作为主数据流、Sink(10条)作为参照时,能输出源独有的5条;
  • 但当Sink(15条)作为参照、源(10条)作为主数据流时,源的10条都在Sink里,自然无输出——而你需要的是Sink独有的记录,这时候得切换主/参照数据流的方向。

解决方案

方案1:两次Exists转换+合并

通过两次单向检查,再合并结果实现双向检测:

  • 第一步:以源数据流为主,Sink数据流为参照,将Exists的匹配条件设为Does Not Exist,得到「源有但Sink没有」的记录;
  • 第二步:以Sink数据流为主,源数据流为参照,同样设置Exists为Does Not Exist,得到「Sink有但源没有」的记录;
  • 用Union转换将上述两个结果集合并,最终输出就是双向的缺失记录。

方案2:Full Outer Join+过滤空值

用全外连接一次性获取双向缺失:

  1. 对源和Sink数据流做Full Outer Join,选择用于匹配记录的唯一键(比如业务主键)作为关联字段;
  2. 添加Filter转换,过滤条件设置为:
    isNull(源关联字段) || isNull(Sink关联字段)
    
    • isNull(源关联字段):代表Sink中存在但源中没有的记录;
    • isNull(Sink关联字段):代表源中存在但Sink中没有的记录。

注意事项

  • 确保关联字段的数据类型完全一致(比如都是字符串、整数),避免因类型不匹配导致匹配失败;
  • 如果源或Sink存在重复记录,建议先通过Distinct或Aggregate转换去重,再进行对比。

内容的提问来源于stack exchange,提问作者vipul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:52:38