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

Azure Data Factory嵌套文件夹文件修改时间获取及过滤复制问题

解决嵌套文件夹中按最后修改时间筛选并复制文件的问题

问题梳理

你需要在ADF中遍历home容器下product_data目录的多层嵌套文件夹,筛选出近10天内修改的Parquet文件(目标文件为20231102.parquet,最后修改于11月7日),但当前存在以下问题:

  • For Loop内的Get Metadata活动“按最后修改时间过滤”未生效
  • 配置的Filter活动因参数错误导致失败

修正步骤

1. 调整Get Metadata活动配置

确保For Loop内的Get Metadata活动设置为获取子项(Get child items),路径指向当前遍历的文件夹(比如用@item().path)。注意:ADF的Get Metadata服务端过滤可能因时区、路径格式等问题失效,建议先获取所有子项,再用Filter活动做精准筛选。

2. 修正Filter活动参数

你之前的Filter配置存在两个关键错误:

  • Items参数错误:不能直接用@activity('Get Files Metadata').output.itemName,应该指向Get Metadata返回的子项数组:
    @activity('Get Files Metadata').output.childItems
    
  • Condition参数错误:需要遍历每个子项的lastModified属性,而非直接取活动的lastModified值,同时要匹配你需要的近10天条件(而非之前的30分钟):
    @greater(item().lastModified, addDays(utcNow(), -10))
    

3. 遍历Filter后的结果

将For Loop的Items参数设置为Filter活动的输出结果,确保仅处理符合条件的文件:

@activity('Filter Files').output.value

4. 复制文件的路径拼接

在Copy活动中,源文件路径需要拼接为完整的存储路径,比如:

@concat(item().path, '/', item().name)

额外注意事项

  • 时区问题:utcNow()返回UTC时间,若你的文件修改时间是本地时区,需做时区转换(比如convertTimeZone(item().lastModified, 'UTC', 'Asia/Shanghai'))
  • 文件类型筛选:如果需要仅处理Parquet文件,可在Filter条件中追加判断:
    @and(greater(item().lastModified, addDays(utcNow(), -10)), endsWith(item().name, '.parquet'))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:53:23