Data Factory数据流Parquet sink源端删除行未同步问题咨询
ADF Data Flow Parquet Sink删除操作不生效解决方案
Parquet为列式文件存储,本身不支持原生行级删除,仅勾选Sink的Allow Delete选项无法自动识别源端已删除的行,需要按以下步骤补全逻辑:
- 补全行级删除标记逻辑
你需要通过全量比对或CDC日志识别待删除的行:- 若使用全量同步模式:将目标端现有Parquet文件作为第二个源接入数据流,和业务源以主键为关联键做左外连接,新增派生列
__delete_flag,表达式为iif(isNull(业务源.主键字段), true(), false()),标记出仅存在于目标端、不存在于当前源端的行 - 若使用增量CDC同步模式:确保你已经从源端CDC日志中解析出删除事件,将对应行的
__delete_flag标记为true()
- 若使用全量同步模式:将目标端现有Parquet文件作为第二个源接入数据流,和业务源以主键为关联键做左外连接,新增派生列
- 调整Sink端配置
- 确认已勾选
Allow Delete选项 - 在
Delete condition配置项中填入__delete_flag == true() - 正确配置
Key columns为你的业务主键列,主键是行匹配的核心依据 - 写入模式保持选择
Upsert,原有的Upsert条件true()无需修改
- 确认已勾选
- 常见问题排查
- 若Parquet按分区存储,需将分区键加入关联键和主键匹配逻辑,避免跨分区行匹配失败
- 需确保
__delete_flag字段的类型为布尔型,类型不匹配会导致删除条件判断失效
内容的提问来源于stack exchange,提问作者arkiboys
相关产品推荐
相关产品推荐

