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

如何在ADF表达式构建器中引用childItems所有键并批量删除文件夹

在Azure Data Factory中批量删除Get Metadata列出的文件夹

问题描述

我使用Get Metadata活动列出了目录中的文件夹(对应childItems数组),希望能够删除所有已列出的文件夹。目前我可以通过以下表达式每次引用一个文件夹:

@concat(item().source, '/', item().directory, '/', activity('Get Metadata').output.childItems[0]['name']

但该表达式每次运行仅能删除一个文件夹。我尝试过childItems[0:1]这类写法但无效,请问是否有办法一次性引用所有文件夹,让Delete Activity可以批量删除所有文件夹?

解决方案

要实现批量删除,核心是用Foreach活动遍历Get Metadata返回的所有文件夹项,具体操作如下:

  • 在Get Metadata活动后添加Foreach活动,将其Items属性设置为:
    @activity('Get Metadata').output.childItems
    
  • 在Foreach活动内部嵌套Delete Activity,配置Delete Activity的文件路径表达式为:
    @concat(item().source, '/', item().directory, '/', item()['name'])
    
    这里直接用item()指代当前遍历到的文件夹对象,无需指定固定索引。
  • 若你的存储服务支持并发操作,可将Foreach活动的Sequential选项设为false,实现并行批量删除,提升处理速度。

额外优化(避免误删文件)

如果childItems数组中同时包含文件和文件夹,建议先在Get Metadata活动中勾选Child items和Item type,然后给Foreach的Items添加过滤条件,只处理文件夹:

@filter(activity('Get Metadata').output.childItems, equals(item().type, 'Folder'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:43:24