如何在Azure Data Factory中用数据流拉取当日最后修改文件并避免重复?
Blob到Blob管道仅处理当日文件&避免重复的解决方案
1. 基于文件创建/修改时间直接筛选
在Blob到Blob的复制活动源配置中,添加文件筛选条件,仅拉取当日产生的文件:
- 进入复制活动的「源」设置,找到「文件筛选器」模块
- 设置LastModifiedDate的范围:起始值用动态内容
@startOfDay(utcNow()),结束值用@utcNow() - 若本地文件上传到Blob时保留了原始创建时间,可替换为
CreatedDate来筛选
2. 处理后标记已处理文件
通过文件重命名/移动实现精准去重:
- 管道完成数据流处理后,添加「Blob重命名」活动,将input容器中已处理的文件移至
input/processed子文件夹,或给文件名添加_processed后缀 - 下次运行管道时,源筛选器排除
processed路径或带_processed后缀的文件,确保只处理新文件
3. 用水印表跟踪处理进度(适合跨天/延迟上传场景)
- 在SQL数据库中创建一张水印表,比如
process_watermark,存储字段last_processed_time - 管道启动时,先从水印表读取上次处理的时间戳,作为Blob筛选的起始时间(结束值仍为
@utcNow()) - 处理完成后,更新水印表的
last_processed_time为当前时间,确保每次只处理新增文件
配置注意点
- 管道设置为每日定时触发(比如UTC时间凌晨运行),避免无意义的重复触发
- 若使用数据流,需在数据流的源数据集同步设置相同的时间筛选条件,防止数据流读取所有文件
内容的提问来源于stack exchange,提问作者danchdrezzing
相关产品推荐
相关产品推荐

