Azure Data Factory:如何从CSV文件列表创建多目标文件夹
批量创建带年月层级的文件夹结构(基于CSV列表)
现有基础:
已通过Lookup活动读取folderlist.csv的文件夹名称列表,外层ForEach循环遍历这些名称。以下是基于模拟复制的完整实现方案:
1. 补充变量与嵌套循环逻辑
在主管道中添加以下变量和嵌套循环:
- 定义年份数组变量:比如
YearList,值设为[2023,2024](按需调整年份范围,也可通过@range(int(substring(utcNow(),0,4))-1,2)动态生成近2年) - 外层ForEach(遍历CSV文件夹名)内,嵌套第二个ForEach循环,遍历
YearList数组,每次迭代将当前年份存入CurrentYear变量 - 在年份循环内,再嵌套第三个ForEach循环,遍历月份数组
['01','02','03','04','05','06','07','08','09','10','11','12'](或用@range(1,12)生成数字后转两位格式),当前月份存入CurrentMonth变量
2. 生成动态文件夹路径
在每个月份循环迭代中,用表达式生成完整的层级路径:
- 根文件夹:
@item('外层ForEach的名称')(示例:freebees) - 年份子文件夹:
@concat(item('外层ForEach的名称'), '-', variables('CurrentYear'))(示例:freebees-2023) - 月份子文件夹:
@concat(item('外层ForEach的名称'), '-', variables('CurrentYear'), '-', variables('CurrentMonth'), substring(string(variables('CurrentYear')),2,2))(示例:freebees-2023-0123)
3. 用模拟复制创建文件夹结构
利用复制空文件的方式自动生成层级文件夹:
- 提前准备空文件:在源存储创建一个空的
dummy.txt文件 - 配置复制活动:
- 源数据集:指向这个
dummy.txt - 目标数据集:设置动态路径为上述生成的月份子文件夹路径,文件名保持
dummy.txt(或自定义) - 复制活动会自动创建路径中不存在的所有层级文件夹
- 源数据集:指向这个
4. 可选优化
- 如果不需要保留空文件,可在所有复制完成后,添加Delete活动,用通配符
*dummy.txt删除所有生成的空文件 - 将年份、月份的逻辑封装为子管道,通过Execute Pipeline活动调用,让主管道结构更简洁
- 若目标存储支持(如ADLS Gen2),也可替换复制活动为Web活动,调用存储REST API直接创建文件夹,省去空文件步骤
内容的提问来源于stack exchange,提问作者Ifeanyi
相关产品推荐
相关产品推荐

