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

Azure Data Factory动态批量删除多表过期文件夹的配置疑问

Azure Data Factory 批量遍历表文件夹并删除5天前数据改造方案

1. 新增根路径Get Metadata活动获取所有表名

  • 创建一个Get Metadata活动(命名如Get Metadata - 所有表文件夹),关联的数据集路径设置为bronze/D365/Snapshot/
  • 在活动的字段选项中,勾选Child items,获取该路径下所有子文件夹(即所有表名)

2. 配置ForEach循环遍历表列表

  • 添加ForEach活动,将Items设置为以下表达式:
    @activity('Get Metadata - 所有表文件夹').output.childItems
    
  • (可选)若表数量较多,可关闭Sequential选项开启并行处理,注意不要超过存储服务的并发限制

3. 改造数据集为动态参数化模式

  • 打开循环内用于读取表下日期文件夹的数据集,添加一个字符串类型参数,命名为TableName
  • 将数据集的folder_path修改为动态路径:
    bronze/D365/Snapshot/@{dataset().TableName}/
    

4. 循环内Get Metadata活动绑定动态表名

  • 在ForEach循环内的Get Metadata活动(读取当前表下的日期文件夹)中,找到数据集参数设置
  • 将TableName参数的值设置为表达式:
    @item().name
    
    (item().name对应根路径Get Metadata返回的每个子文件夹名称,即表名)

5. 动态筛选并删除5天前的文件夹

  • 在循环内的Get Metadata活动获取到当前表下的所有日期文件夹后,添加Filter活动筛选需删除的文件夹:
    • 若按文件夹名称的日期判断(如文件夹名是yyyy-MM-dd格式),Filter条件表达式:
      @lessOrEquals(convertToDateTime(item().name), addDays(utcNow(), -5))
      
      注:若文件夹名是其他格式(如yyyyMMdd),需在convertToDateTime中指定格式,例如convertToDateTime(item().name, 'yyyyMMdd')
    • 若按文件夹最后修改时间判断,条件表达式:
      @lessOrEquals(item().lastModified, addDays(utcNow(), -5))
      
  • 添加Delete活动,将文件夹路径设置为@{item().path}(Filter输出的每个文件夹对象的path属性),并勾选Delete folder选项确保删除整个文件夹

关键注意事项

  • 确保所有Get Metadata和Delete活动使用的数据集拥有足够的存储账户权限(读取、删除权限)
  • 测试时可先开启ForEach的Sequential模式并限制循环次数,避免误删数据
  • 若日期文件夹的时区与ADF的UTC时区不一致,需在日期转换时指定对应时区,例如:
    @lessOrEquals(convertFromUtc(convertToDateTime(item().name), 'Asia/Shanghai'), addDays(utcNow(), -5))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:09:58