Azure Data Factory复制文件时如何去除源文件夹层级结构
ADF复制文件去除源文件夹层级的解决方案
问题根源
当前配置会保留源层级,是因为Copy Activity默认继承源路径的相对结构,需要通过动态路径配置直接指定单个文件的读写路径。
具体修正步骤
1. 确认Get Metadata的文件获取逻辑
- 将Get Metadata活动的源数据集路径设为
a/b/c/d,勾选Child items选项,确保仅获取该目录下的文件(可通过@filter(activity('Get Metadata').output.childItems, equals(item().type, 'File'))过滤掉文件夹)。
2. 调整For Each的迭代对象
- For Each的Items属性直接使用上述过滤后的文件列表,确保每次迭代仅处理单个文件。
3. 核心:Copy Activity的路径配置
源端配置
- 不给源数据集固定路径,在Copy Activity的源选项卡中,将文件路径设为动态表达式:
直接指向当前迭代的单个源文件。@concat('a/b/c/d/', item().name)
目标端配置
- 目标数据集的固定路径设为
a/b,然后在文件名处使用动态表达式:
这样文件会直接写入@item().namea/b目录,不会携带源端的c/d层级。
4. 避坑提示
- 关闭源数据集的递归选项,防止误获取子目录内容。
- 若存在重名文件,可修改目标文件名表达式(如
@concat(utcNow('yyyyMMddHHmmss'), '_', item().name))避免覆盖。
内容的提问来源于stack exchange,提问作者Sowmya thota
相关产品推荐
相关产品推荐

