Microsoft Fabric及ADF:仅Upsert的ETL(忽略删除)实现问询
实现仅插入/更新、忽略删除的ETL流程(Microsoft Fabric/ADF可视化编辑器)
完全可以通过Microsoft Fabric或Azure Data Factory (ADF) 的可视化编辑器实现该需求,核心是利用增量复制+保留目标现有记录的配置逻辑,避免同步源端的删除操作。以下是具体操作步骤:
Microsoft Fabric 操作步骤
- 打开Fabric数据工厂,新建数据管道并添加「复制数据」活动
- 配置源:选择业务应用数据库作为源数据集,启用增量复制,指定增量标识列(如
LastModifiedDate时间戳列或自增ID列),用于识别源端新增/更新的记录 - 配置目标:选择Fabric Lakehouse或Warehouse(对应你的Synapse源副本)作为目标数据集
- 在「复制数据」活动的设置标签页中,找到「复制行为」选项:
- 选择「Upsert(插入更新)」:指定主键列作为匹配键,源端更新的记录会覆盖目标对应行,新增记录会插入,源端删除的记录不会被同步删除
- 若选择「增量追加」:会保留所有历史记录,新增/更新的记录直接追加,但源端更新同一条记录时会产生重复行,因此更推荐Upsert模式
- 保存管道后,可设置定时触发,持续同步源端的新增/更新记录,源端的删除操作不会影响目标库的留存数据
Azure Data Factory (ADF) 操作步骤
- 在ADF中新建管道,添加「复制数据」活动
- 配置源数据集为业务应用数据库,启用增量复制并指定增量列(如
LastModifiedDate) - 配置目标数据集为Azure Synapse Analytics
- 进入「复制数据」活动的映射标签页确认列映射无误,再切换到设置标签页:
- 在「写入行为」中选择「Upsert」,设置主键列作为匹配键,确保源端新增/更新记录同步到目标,删除操作不会被执行
- 若选择「追加」模式,需注意重复行问题,仅适合无需更新现有记录的场景
- 配置定时触发,运行后目标库将保留所有历史记录,仅同步源端的新增和更新操作
注意事项
- 源表必须具备可靠的增量标识列,否则无法准确识别新增/更新的记录
- 若源表无增量列,可采用「全量复制到临时表+SQL Merge脚本」的方式:先将全量数据复制到临时表,再在管道中添加「SQL脚本」活动,执行Merge语句实现仅插入更新、忽略删除,但该方式效率较低,仅适合小表
- 目标表需正确配置主键约束,确保Upsert操作能精准匹配记录
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

