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

基于文件名在Azure Data Factory中批量复制文件至多文件夹

使用Azure Data Factory实现ADLS Gen2文件按名称分类复制

前提准备

已在ADF中配置好源ADLS Gen2链接服务和目标ADLS Gen2链接服务,分别对应源存储账户与目标存储账户。

方法一:管道+ForEach循环(适合中小规模文件)

步骤1:创建源数据集

  • 选择ADLS Gen2数据集类型,关联源链接服务
  • 设置文件路径为 Source/*/*.txt,用通配符匹配所有日期子文件夹及其中的txt文件
  • 勾选「递归」选项,确保遍历所有层级的子文件夹

步骤2:创建目标数据集

  • 选择ADLS Gen2数据集类型,关联目标链接服务
  • 文件夹路径使用动态表达式:
    @concat('Target/', split(item().name, '_')[0])
    
    该表达式会从文件名(如A_20221212.txt)中提取前缀A,自动生成/复用Target/A文件夹(不存在则自动创建)
  • 文件名设置为 @item().name,保留原文件名

步骤3:构建管道

  1. 添加Get Metadata活动(命名为GetSourceFiles)
    • 关联源数据集,勾选「子项」选项,获取所有源文件的元数据列表
  2. 添加ForEach活动,将其输入关联到GetSourceFiles的输出
    • 设置「项目」为 @activity('GetSourceFiles').output.childItems,遍历所有获取到的文件
  3. 在ForEach活动内部添加Copy Data活动
    • 源端:关联源数据集,文件路径动态设置为 @concat('Source/', item().folder, '/', item().name),精确定位单个源文件
    • 目标端:关联目标数据集,此时会自动根据文件名前缀生成目标文件夹并复制文件

方法二:映射数据流(适合大规模文件批量处理)

步骤1:创建源数据集

  • 选择ADLS Gen2数据集类型,关联源链接服务
  • 设置文件路径为Source,勾选「递归」和「通配符文件路径」,通配符设为*.txt

步骤2:构建映射数据流

  1. 添加源转换,关联上述源数据集,获取所有源文件
  2. 添加派生列转换,新增列TargetFolder,表达式为:
    split(name, '_')[0]
    
    提取文件名前缀作为目标文件夹名称
  3. 添加接收器转换,关联目标ADLS Gen2数据集
    • 在「设置」页签,将「文件夹路径」设置为 Target/{TargetFolder},引用派生的TargetFolder列
    • 文件名保留默认的name,即原文件名

步骤3:运行数据流

将数据流添加到管道中并触发运行,即可批量完成文件的分类复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:20:27