You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure Data Factory获取Azure Data Lake中文件的最早最后修改日期

Azure Data Factory 获取ADLS指定路径下最早文件修改日期方案

以下两种方案均可实现需求,可根据路径下的文件量级选择:


方案1:Get Metadata + 循环实现(适合文件量<1000的场景)

无需额外服务,纯ADF原生活动实现:

  • 步骤1:创建ADLS Gen2链接服务,再创建对应的二进制数据集,数据集路径配置为要查询的目标文件夹,不要指定具体文件名。
  • 步骤2:添加Get Metadata活动,关联上述二进制数据集,字段列表选择Child Items,可返回目标路径下所有文件/文件夹的元数据列表。
  • 步骤3:添加Filter活动,输入值选择Get Metadata返回的@activity('Get Metadata').output.childItems,过滤条件写@not(item().isFolder),过滤掉文件夹仅保留文件。
  • 步骤4:创建两个管道变量:
    • 字符串类型变量earliestDate,默认值设为9999-12-31
    • 数组类型变量fileList,用来存储过滤后的文件列表
  • 步骤5:添加ForEach活动,遍历Filter活动的输出结果,活动内部添加If Condition活动,判断条件写@less(ticks(item().lastModified), ticks(variables('earliestDate'))),如果条件为真,将earliestDate变量赋值为当前遍历到的@item().lastModified。
  • 步骤6:循环结束后,用表达式@formatDateTime(variables('earliestDate'), 'yyyy-MM-dd')格式化输出,即可得到示例中的2021-10-01结果。

方案2:Synapse Serverless SQL查询实现(适合文件量>1000的场景)

文件量级大时循环遍历效率低,直接用SQL查询元数据性能更高:

  • 步骤1:在Synapse工作区中执行如下SQL,替换对应存储账号、容器、路径参数即可直接查询结果:
SELECT FORMAT(MIN(last_modified), 'yyyy-MM-dd') as earliest_modified_date
FROM OPENROWSET(
    BULK 'https://<你的存储账号名>.dfs.core.windows.net/<容器名>/<目标文件夹路径>/*',
    FORMAT = 'PARQUET'
) AS file_meta
  • 步骤2:在ADF管道中添加Lookup活动,关联Synapse Serverless SQL链接服务,直接执行上述SQL语句,即可返回最早修改日期结果。

注意:如果需要查询多层子文件夹下的所有文件,可在Get Metadata活动中开启递归选项,或在Serverless SQL的BULK路径末尾加/**匹配所有层级子文件。

内容的提问来源于stack exchange,提问作者Sandeep T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:57:04