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

如何配置Azure Data Factory作业按通配符分文件夹复制到ADLS

Azure Data Factory 按文件名前缀批量复制文件到对应文件夹配置步骤

以下是针对你需求的具体配置细节,基于你提到的ForEach + Switch + Copy Activity方案:

1. 基础准备:配置链接服务与数据集

  • 源链接服务:创建指向ADLS Gen2源容器A的链接服务,确保权限足够(如存储Blob数据参与者)。
  • 源数据集:基于上述链接服务,设置文件系统为容器A,文件名留空或设为*.txt(仅获取txt文件);建议添加参数FileName,后续动态传入当前遍历的文件名。
  • 接收器链接服务:创建指向ADLS Gen2接收器容器B的链接服务。
  • 接收器数据集:基于接收器链接服务,设置文件系统为容器B;添加参数TargetFolder,后续动态指定目标子文件夹(如Folder_A/)。

2. 添加Get Metadata活动(获取源文件列表)

  • 活动名称:Get Source TXT Files
  • 配置:
    • 数据源:选择刚才创建的源数据集(若数据集设了*.txt,则自动过滤非txt文件)
    • 字段列表:勾选Child Items,用来获取容器A下所有符合条件的文件数组。

3. 添加ForEach活动(遍历所有源文件)

  • 活动名称:Iterate Over Source Files
  • 配置:
    • Items:输入表达式 @activity('Get Source TXT Files').output.childItems,遍历Get Metadata返回的文件列表。
    • 并行度:默认20,可根据文件数量调整(若文件过多,建议适当降低避免存储并发限制)。
    • 可选勾选Sequential(需要按顺序复制时启用,否则并行复制)。

4. 在ForEach内添加Switch活动(判断文件名前缀)

  • 活动名称:Route File to Target Folder
  • 配置:
    • On:输入表达式 @split(item().name, '-')[0],拆分文件名(如fileA-20240201.txt拆分后取第一个元素fileA),以此作为判断依据。
    • 添加3个Case和1个默认Case:

      Case 1:匹配fileA

      • Case值:fileA
      • 内部添加Copy Activity:
        • 源配置:选择源数据集,给参数FileName赋值 @item().name,指定当前要复制的文件。
        • 接收器配置:选择接收器数据集,给参数TargetFolder赋值 Folder_A/;文件名设置为@item().name(保留原文件名)。

      Case 2:匹配fileB

      • Case值:fileB
      • 内部Copy Activity配置:接收器参数TargetFolder赋值 Folder_B/,其余同Case1。

      Case 3:匹配fileC

      • Case值:fileC
      • 内部Copy Activity配置:接收器参数TargetFolder赋值 Folder_C/,其余同Case1。

      默认Case(处理不匹配的文件)

      • 可添加Set Variable活动,将不匹配的文件名记录到变量(如UnmatchedFiles),表达式示例:@concat(variables('UnmatchedFiles'), item().name, '; '),方便后续排查。

5. 测试与验证

  • 先上传少量测试文件到源容器A,触发管道运行。
  • 检查接收器容器B的对应文件夹,确认文件是否正确复制;同时查看默认Case的变量记录(若有不匹配文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:50:03