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

Azure Data Factory复制目录时如何跳过打开状态的Excel文件

解决方案

1. 调整源数据集的FilePattern,排除临时锁定文件

Excel的锁定临时文件以~$开头,直接修改源数据集的FilePattern表达式,添加对这类文件的排除逻辑:

将原本的:

@concat('*',pipeline().parameters.FilePattern,'*')

替换为:

@concat('[!~$]*', pipeline().parameters.FilePattern, '*')

这个表达式利用通配符[!~$]限制文件名的第一个字符不能是~或$,直接排除所有~$开头的临时锁定文件,同时保留原有文件匹配规则。

2. 在ForEach内添加Lookup活动过滤文件列表(避免嵌套ForEach)

如果上述通配符方式无法满足更复杂的过滤需求,可以在现有ForEach活动内调整逻辑,先通过Lookup获取有效文件列表,再批量复制:

  • 添加一个Lookup活动,源使用文件共享数据集,路径设置为@item().DS_Directory_Name,FilePattern沿用原表达式@concat('*',pipeline().parameters.FilePattern,'*')。
  • 在Lookup活动的查询选项中,添加过滤条件:
    SELECT * WHERE name NOT LIKE '~$%'
    
    这会返回当前目录下所有符合规则且未被锁定的文件元数据(包含文件路径)。
  • 修改后续的Copy Data活动,将源数据集的文件路径设置为:
    @join(activity('Lookup_Valid_Files').output.value, ',')
    
    该表达式将Lookup返回的有效文件路径拼接为逗号分隔的字符串,让Copy Data仅复制这些已过滤的文件,避免尝试访问锁定的临时文件。

3. 启用Copy Data活动的容错选项(针对文件列表模式)

当采用上述Lookup获取文件列表的方式后,Copy Data活动的源已从“目录加载”变为“指定文件列表”,此时可以启用Copy Data的容错功能:

  • 在Copy Data活动的设置标签下,找到容错设置,勾选跳过无法打开的文件,并设置允许跳过的文件数量或比例。
  • 即使仍有文件被锁定(比如Lookup之后文件才被打开),Copy Data会自动跳过这些文件,不会导致整个流水线报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:40:21