Azure Data Factory如何记录数据处理中被跳过的行?
可行方案:记录数据流中被过滤的无效行
针对你数百万行数据的场景,推荐以下几种无需依赖Lookup活动的高效方案:
1. 用数据流的Split转换分流有效/无效数据
这是最适配大数据量的方案,直接替代原来的Filter步骤:
- 在数据流中添加Split转换,基于你原本的校验规则(比如允许的特定符号、非缺失字段)设置分流条件:
- 分支1:符合规则的行,继续流向Cosmos DB Sink
- 分支2:不符合规则的行,新增一个Blob Storage Sink,将这些无效行写入指定容器的.gzip文件(命名可带上时间戳,方便区分批次)
- 这种方式不会丢失任何数据,无效行被完整留存,后续可直接打开错误文件排查误过滤情况
2. 配置Cosmos DB Sink的错误输出
如果你的无效行不仅包含校验不通过的情况,还包括写入Cosmos DB时的格式错误(比如主键重复、字段类型不匹配),可以直接在Cosmos DB Sink中配置:
- 打开Sink的容错设置,启用“输出到错误数据集”选项
- 指定错误数据的存储位置(Blob Storage容器),格式选择.gzip
- 所有无法成功写入Cosmos DB的行都会被自动写入错误文件,同时保留原始数据的所有字段信息
3. 给无效行打标记后统一归档
如果需要同时保留有效数据的处理链路和无效行的标记记录:
- 在Filter步骤前添加Derived Column转换,新增一个字段(比如
is_valid),用校验规则赋值true/false - 后续用Split转换按
is_valid字段分流,有效行正常导入Cosmos DB,无效行写入Blob日志文件 - 这种方式可以在日志文件中清晰看到每行的校验结果,便于回溯
内容的提问来源于stack exchange,提问作者Mr. Blond
相关产品推荐
相关产品推荐

