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

如何在ADF中根据文件名创建对应文件夹

在Azure Data Factory中按文件名前缀分类存储文件

问题场景

现有以下CSV文件:

ABCD_12234.csv
ABCD_56789.csv
CDE_EFG_123456.csv
CDE_EFG_786542.csv

需要按规则归档:前缀为ABCD的文件存入ABCD文件夹,前缀为CDE_EFG的文件存入CDE_EFG文件夹,以下是两种在ADF中实现的方案:


方案一:复制活动+动态内容(快速实现)

这种方式无需复杂转换,适合批量文件的直接分类迁移:

  1. 配置源数据集:创建指向存储文件的容器/根路径的数据集,将文件路径设置为通配符(如*.csv),确保能读取所有目标文件。
  2. 配置目标数据集:创建同一存储账户下的数据集,将文件夹路径设置为动态表达式,直接匹配文件名前缀:
    @if(startsWith(item().Name, 'ABCD_'), 'ABCD', if(startsWith(item().Name, 'CDE_EFG_'), 'CDE_EFG', ''))
    
    该表达式会自动判断当前文件名的前缀,返回对应的文件夹名称。
  3. 设置复制活动:
    • 源选项卡:勾选"递归"(如果文件在子目录),选择"从数据集获取文件列表";
    • 目标选项卡:将文件命名设置为@item().Name,保留原文件名;
  4. 执行管道:运行后所有文件会自动分类写入对应文件夹。

方案二:数据流(灵活扩展)

如果后续需要对文件内容做处理,或者有更复杂的分类规则,推荐使用数据流:

  1. 创建源数据流:添加源数据集指向文件存储路径,启用"通配符文件路径"读取所有CSV文件。
  2. 派生列获取目标文件夹:添加"派生列"转换,新增FolderName列,表达式为:
    iif(startsWith(Name, 'ABCD_'), 'ABCD', iif(startsWith(Name, 'CDE_EFG_'), 'CDE_EFG', ''))
    
    这里的Name是数据流自动提取的原文件名字段。
  3. 条件拆分数据流:添加"条件拆分"转换,根据FolderName的值拆分出ABCD、CDE_EFG两个分支(可忽略其他分支)。
  4. 配置目标输出:
    • 为每个分支添加目标数据集,分别指向ABCD和CDE_EFG文件夹;
    • 或者使用单个目标数据集,将文件夹路径设置为参数化值@dataset().FolderName,在每个分支的目标设置中传递对应的FolderName值;
  5. 运行数据流:将数据流加入管道执行,完成文件分类存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:01:25