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

Azure ADF中ForEach+GetMetadata动态遍历子文件夹索引求助

解决Azure Data Factory中ForEach动态遍历所有子文件夹的问题

核心问题分析

你当前用固定索引[0]只能取第一个子文件夹,是因为没有利用ForEach的迭代项动态引用能力,而是硬编码了数组索引。要实现遍历所有子项,需要让ForEach直接迭代GetMetadata返回的childItems数组,并在循环内用item()引用当前项。

具体实现步骤

  1. 确保GetMetadata正确获取所有子项
    配置你的GetParentFolderMetadata活动,在"字段列表"中勾选Child Items,这样它的输出childItems会包含目标父目录下所有子文件夹和文件的完整数组。

  2. 配置ForEach的迭代源
    把ForEach活动的Items属性设置为:

    @activity('GetParentFolderMetadata').output.childItems
    

    如果只想遍历子文件夹(排除文件),可以用filter函数过滤:

    @filter(activity('GetParentFolderMetadata').output.childItems, equals(item().type, 'Folder'))
    
  3. 在ForEach内部动态引用当前子项
    循环内的Set Variable活动,直接用@item().name获取当前遍历到的子文件夹名称,替换原来的@activity('GetParentFolderMetadata').output.childItems[0]['name']。

    比如,Set Variable的表达式改为:

    @item().name
    

额外优化建议

  • 如果需要把所有子文件夹名称收集到一个数组变量中,可以初始化一个数组类型的变量(比如allFolderNames),然后在Set Variable中用@concat(variables('allFolderNames'), createArray(item().name))来追加元素。
  • 若子文件夹还有嵌套层级,可考虑用递归方式(比如在ForEach内部再调用GetMetadata和嵌套ForEach),但需要注意ADF的循环深度限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:02