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

如何在Azure Data Factory中读取存储第三层级CSV文件并逐一处理

在Azure Data Factory中批量处理指定层级文件的实现方案

核心思路

通过分层遍历+参数化数据集的原生ADF组件组合,逐层定位到Category层级下的CSV文件,同时获取文件路径与名称,既避免递归扫描的性能损耗,又无需依赖Azure函数等额外资源,满足差异化处理需求。

具体操作步骤

1. 创建参数化的Blob存储数据集

创建指向存储账户Inbound容器的Blob数据集,添加3个自定义参数:

  • MarketFolder:传递Market层级文件夹名称(如Market 1)
  • CategoryFolder:传递Category层级文件夹名称(如Category 1)
  • FileName:传递目标CSV文件名

在数据集的连接配置中,设置文件路径表达式为:

Inbound/@{dataset().MarketFolder}/@{dataset().CategoryFolder}/@{dataset().FileName}

2. 获取所有Market层级文件夹

添加Get Metadata活动,配置如下:

  • 数据源:使用无参数的基础Blob数据集,指向Inbound容器
  • 勾选子项选项,设置递归为否,仅获取Inbound下直接的Market文件夹列表
  • 输出:将活动返回的childItems结果存入数组变量(如varMarketFolders)

3. 遍历每个Market文件夹

添加ForEach活动,迭代项设为@variables('varMarketFolders')(可勾选顺序执行控制并发),内部执行以下操作:

3.1 获取当前Market下的Category文件夹

添加第二个Get Metadata活动:

  • 数据源:使用基础Blob数据集,路径设为Inbound/@{item().name}
  • 勾选子项,递归设为否,获取当前Market下的Category文件夹列表
  • 输出:将childItems存入数组变量(如varCategoryFolders)

3.2 遍历每个Category文件夹

添加第二个ForEach活动,迭代项设为@variables('varCategoryFolders'),内部执行以下操作:

3.2.1 获取Category下的CSV文件

添加第三个Get Metadata活动:

  • 数据源:使用基础Blob数据集,路径设为Inbound/@{item().parent.name}/@{item().name}
  • 勾选子项,递归设为否,获取该Category下的所有CSV文件
  • 输出:将childItems存入数组变量(如varFiles)
3.2.2 逐个处理文件

添加第三个ForEach活动,迭代项设为@variables('varFiles'),内部添加自定义处理逻辑(如数据流、Lookup等):

  • 调用步骤1创建的参数化数据集,传入参数:
    • MarketFolder:@{item().parent.parent.name}
    • CategoryFolder:@{item().parent.name}
    • FileName:@{item().name}
  • 通过item().path直接获取文件完整路径,结合If Condition活动实现差异化处理(比如根据Market/Category名称分支执行不同逻辑)

方案优势

  • 性能优化:分层非递归扫描,仅获取当前层级内容,避免全量递归的性能损耗
  • 原生实现:全程使用ADF内置组件,无需额外资源依赖
  • 灵活性强:通过文件路径与名称参数,可快速定制不同Market/Category下的专属处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:30:56