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

Azure Data Factory管道:无需通配符路径复制指定ADLS文件的问题

解决方法:动态构造源文件完整路径

你已经通过Lookup拿到了目标文件名数组,且在ForEach里遍历每个文件名,完全可以直接动态拼接源文件的完整路径来替代通配符,具体操作如下:

1. 确认ForEach遍历配置

确保ForEach活动的Items设置为Lookup活动的输出数组,比如:@activity('Lookup文件名').output.value,按需勾选Sequential(如果不需要并行处理,或者要避免源文件冲突的话)。

2. 给Copy活动源动态指定单个文件路径

方式一:参数化源数据集(推荐)

  • 编辑你的ADLS源数据集,添加一个字符串类型参数,比如FileName。
  • 在数据集的文件路径设置里,把文件名部分替换为参数:@dataset().FileName(假设源容器路径固定为source-container/,那完整路径就是source-container/@{dataset().FileName})。
  • 回到Copy活动的源设置,选中该数据集,在参数里传入当前遍历的文件名:@item().你的文件名字段名(比如Lookup返回的记录里字段叫CountryName,就写@item().CountryName)。

方式二:直接在Copy活动中动态设置(无需修改数据集)

如果不想改数据集,也能在Copy活动的源设置里直接用表达式构造完整路径:

  • 选好ADLS源数据集后,在文件路径的编辑选项中输入:
    @concat('source-container/', item().你的文件名字段名)
    
    把source-container换成你的源容器名称,item().你的文件名字段名替换成Lookup返回的具体字段(比如item().CountryName)。

3. 目标路径的动态配置(适配独立文件夹需求)

要把文件复制到目标容器的对应独立文件夹,同样用动态表达式构造路径:
比如目标路径设为:

@concat('target-container/', item().你的文件名字段名, '/', item().你的文件名字段名)

这样每个文件会被放到target-container/India/India这类独立文件夹下,可根据需求调整路径结构。

关于已配置的Get Metadata活动

如果这个活动是用来验证文件是否存在,可以保留:在Get Metadata的文件路径里同样用上述动态方式指定,然后在Copy活动前加个If Condition活动,判断@activity('Get Metadata').output.exists是否为真,避免因文件不存在导致管道失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:52:18