ADF pipeline数据流转换插入重复记录 跨LinkedServer迁移数据去重方案
ADF 跨服务器去重插入 Pipeline 调整方案
方案1:调整现有数据流逻辑
- 两个源组件配置修正:
- 源1指向LinkedServer A的table1,提前对Id字段去重,如果源表本身存在重复Id,直接会导致目标表插入重复数据,可以加聚合组件按Id分组取第一条记录,或者在源查询中加distinct过滤。
- 源2指向LinkedServer B的table2,仅读取Id字段即可,降低数据传输开销。
- 联接组件配置:
选择左外部联接,关联条件设置为源1.Id = 源2.Id,不要选错联接类型。 - 筛选组件配置:
筛选条件设置为isNull(源2.Id),仅保留table2中不存在的记录,完全对应你提供的SQL逻辑。 - 接收器组件配置:
指向LinkedServer B的table2,写入方式选仅追加,如果目标表Id是主键/唯一键,不要开启允许重复键写入的配置,异常直接抛出方便排查逻辑问题。
方案2:使用复制活动简化实现(性能更优)
如果数据量较大,数据流join的开销更高,直接用复制活动搭配源查询即可实现需求:
- 复制活动源配置:选择LinkedServer A对应的数据集,查询方式选自定义查询,输入以下SQL:
-- 直接在源端完成去重校验,不需要ADF做计算 select A.* from databasename.dbo.table1 A left join databasename.dbo.table2 B on A.Id = B.Id where B.Id is null
- 复制活动接收器配置:选择LinkedServer B的table2数据集,写入方式选追加即可。
小提示:如果两个库跨实例无法直接join,可以先把table2的全量Id同步到A库的临时表,再执行上面的查询逻辑。
内容的提问来源于stack exchange,提问作者user16402180
相关产品推荐
相关产品推荐

