在ADF中实现数据流源与接收器路径动态配置
在Azure Data Factory中实现动态路径的多文件夹CSV同步处理
核心方案
通过ADF的元数据活动获取源容器下的子文件夹清单,配合ForEach遍历+动态参数,自动映射源与目标的对应子文件夹路径,实现批量处理。
分步实现
1. 配置带参数的数据集
- 分别创建源、目标两个Blob存储数据集,均指向对应的存储账户
- 给源数据集添加
SourceFolder参数,将其文件夹路径设为@dataset().SourceFolder;给目标数据集添加TargetFolder参数,文件夹路径设为@dataset().TargetFolder - 示例:源数据集完整路径会自动拼接为
container/@{dataset().SourceFolder},目标为stagecontainer/@{dataset().TargetFolder}
2. 获取源容器的子文件夹列表
- 添加Get Metadata活动,关联源数据集,设置要获取的字段为
Child items - 将源数据集的
SourceFolder参数留空(或设为根路径/),确保能抓取容器下所有子文件夹(如test1subfolder、test2subfolder)
3. 遍历子文件夹执行处理
- 添加ForEach活动,将
Items属性设为@filter(activity('Get Metadata活动名称').output.childItems, @equals(item().type, 'Folder'))——只遍历文件夹,排除文件 - 在ForEach内部添加Copy Data活动(如需数据转换,替换为Data Flow):
- 源端:选择源数据集,将
SourceFolder参数赋值为@item().name(当前遍历的子文件夹名) - 目标端:选择目标数据集,将
TargetFolder参数赋值为@item().name,确保目标路径与源路径的子文件夹名完全对应 - 若用Data Flow处理,可将文件夹名作为参数传入,适配不同表的处理逻辑
- 源端:选择源数据集,将
4. 验证与调试
- 调试管道时,查看ForEach的迭代参数,确认源、目标路径是否正确映射
- 运行后检查阶段容器,确认对应子文件夹已生成且处理后的CSV文件正确写入
注意事项
- 如果子文件夹有多层嵌套,可在Get Metadata中开启递归,或结合Lookup活动获取全层级文件路径
- 若不同子文件夹(表)需要差异化处理,可在ForEach内添加Switch活动,根据文件夹名分支执行不同逻辑
内容的提问来源于stack exchange,提问作者Developer Rajinikanth
相关产品推荐
相关产品推荐

