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

如何使用ADF从文件共享中获取最新日期对应的文件

Azure数据工厂(ADF)获取共享文件中最新日期文件的实现方案

核心实现逻辑

你的文件命名为固定前缀+日期时间戳的规则,可以通过解析文件名提取时间排序,也可以直接通过文件最后修改时间排序实现需求,以下是可直接落地的配置步骤:

方案一:按文件名时间戳提取(精度最高,不受文件上传时间影响)

步骤1:获取目标目录下所有文件列表

  • 添加Get Metadata活动,关联你文件共享对应的链接服务,配置数据集指向csv文件存放的目录,数据集不需要填写具体文件名。
  • 在Get Metadata活动的字段列表配置项中,添加Child Items属性,该属性会返回目录下所有文件、文件夹的名称集合。

步骤2:过滤符合命名规则的csv文件

  • 添加Filter活动,输入项设置为@activity('Get Metadata').output.childItems
  • 过滤条件配置为:
    @and(startswith(item().name, 'xyz_activation_'), endswith(item().name, '.csv'))
    
    该条件会过滤掉目录下所有不符合命名规则的其他文件,避免干扰后续计算。

步骤3:提取文件时间信息并排序

  1. 先在管道变量面板创建两个变量:
    • 数组类型变量fileInfoList,用于存储每个文件的文件名和对应的时间戳
    • 字符串类型变量latestFileName,用于存储最终取到的最新文件名
  2. 添加For Each活动,输入项设置为@activity('Filter').output.value,请务必勾选活动配置中的「顺序」选项,避免并行执行导致变量追加异常
  3. 在For Each活动内部添加Append Variable活动,选择变量为fileInfoList,追加值配置为:
    @json(concat('{"fileName":"', item().name, '","timestamp":"', datetime(split(split(item().name, '.csv')[0], 'activation_')[1])}'))
    
    这段表达式会从文件名中提取时间字符串并转为ADF可识别的datetime类型,用于后续排序对比。
  4. For Each活动执行完成后,添加Set Variable活动,选择变量为latestFileName,取值配置为:
    @first(sort(variables('fileInfoList'), desc(item().timestamp))).fileName
    
    该表达式会将所有符合规则的文件按时间戳倒序排序,取排在第一位的文件名,就是你需要的最新日期对应的文件。

步骤4:后续使用

后续的复制、数据流等操作,直接在数据集的动态文件名处引用@variables('latestFileName')即可。

方案二:按文件最后修改时间提取(配置更简单,适用于文件上传时间和命名时间一致的场景)

如果你的文件是生成后立即上传,不会修改旧文件的最后修改时间,可以直接用更简单的配置:

  • 在Get Metadata活动的字段列表中额外添加Last Modified属性
  • 直接通过如下表达式获取最新文件:
    @first(sort(activity('Get Metadata').output.childItems, desc(item().lastModified))).name
    

内容的提问来源于stack exchange,提问作者subham das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:07