如何在ADF中根据最新上传日期选取最新文件并处理?
在Azure Data Factory中选取文件夹内最新文件并处理的实现方案
核心实现步骤:
获取文件元数据
添加Get Metadata活动,配置目标文件夹路径,勾选Child items和Last modified选项。执行后,该活动会返回文件夹内所有文件的名称、最后修改时间等元数据。定位最新文件
- 添加
Set Variable活动,创建一个DateTime类型的变量(比如LatestModifiedTime),赋值表达式为:
这个表达式会从元数据中提取出最大的最后修改时间,也就是最新文件的修改时间。@max(activity('Get Metadata1').output.childItems, 'lastModified') - 添加
Filter活动,输入数据源选择Get Metadata1输出的childItems,过滤条件设置为:
执行后就能得到所有最后修改时间等于最新时间的文件(若存在多个同时间上传的文件,会全部筛选出来)。@equals(item().lastModified, variables('LatestModifiedTime'))
- 添加
处理目标文件
添加For Each活动,遍历Filter活动的输出结果。在循环内部,根据业务需求添加数据处理活动(比如Copy Data、Data Flow等),文件路径用表达式拼接:@concat('<你的文件夹根路径>', '/', item().name)配置每周调度
在Pipeline的触发器中选择** recurrence trigger**,设置为每周触发一次,调整触发时间以匹配文件存入的节点,确保每次触发都能获取到当周新增的最新文件。
额外提示:
- 如果文件命名有明确的日期规律(比如
data_20240520.csv),也可以通过文件名排序筛选,将Set Variable的表达式改为@max(activity('Get Metadata1').output.childItems, 'name'),但这种方式依赖严格的命名规范,不如修改时间可靠。 - 可在流程中添加日志记录活动,比如用
Set Variable记录每次处理的文件名和时间,方便后续排查问题。
内容的提问来源于stack exchange,提问作者harshith
相关产品推荐
相关产品推荐

