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

如何使用Azure Data Factory获取分区数据的最后修改日期

解决方案

核心实现逻辑为两层嵌套的Get Metadata+For Each组合,先遍历上层分区文件夹,再遍历分区内的文件做过滤筛选,具体操作步骤如下:

步骤1:配置第一层Get Metadata活动

  • 数据集指向根目录product_data/,字段列表勾选子项和最后修改时间
  • 活动输出的子项结果即为所有DATE_ID=xxx格式的分区文件夹列表

步骤2:配置第一层For Each循环

  • 输入参数设置为@activity('第一层Get Metadata活动名称').output.childItems,有并发控制需求可勾选顺序执行
  • 循环内先添加过滤活动,过滤条件设置为@equals(item().type, 'Folder'),确保只处理分区文件夹,跳过根目录下可能存在的非文件夹内容

步骤3:配置第二层Get Metadata活动

将该活动放在第一层For Each循环内部:

  • 数据集配置动态路径:product_data/@{item().name}/,字段列表勾选子项、最后修改时间
  • 活动输出结果即为当前分区文件夹下的所有文件列表,包含parquet文件和committed标记文件

步骤4:配置第二层For Each循环

将该活动放在第一层For Each循环内部,紧跟第二层Get Metadata活动:

  • 输入参数设置为@activity('第二层Get Metadata活动名称').output.childItems
  • 循环内添加过滤活动,设置两个过滤条件:
    1. @endsWith(item().name, '.parquet'):仅保留parquet格式的文件
    2. @greaterOrEquals(item().lastModified, addHours(utcnow(), -24)):仅保留近24小时内有修改的文件

步骤5:结果输出

  • 过滤后符合条件的文件,可通过追加变量活动存储结果,变量定义为数组类型,单条存储值可参考格式:{ "分区名称": "@{item(0).name}", "parquet文件名": "@{item().name}", "最后修改时间": "@{item().lastModified}" }
  • 如果仅需要去重后的分区名称,可在所有循环执行完成后,对结果数组按分区名称字段去重即可得到近24小时有修改的分区列表

注意:数据集对应的存储链接服务需要开启目录列表、属性读取权限,否则无法正常读取多级子项的修改时间信息。

内容的提问来源于stack exchange,提问作者Mariah Akinbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:24:00