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

Azure Data Factory中仅处理数据流生成新文件的方案问询

解决方案:仅处理ADF数据流刚生成的文件

方案1:数据流输出文件名数组到管道变量

直接从数据流获取本次生成的所有文件名,跳过GetMetadata的全量扫描:

  • 在数据流的接收器前添加聚合转换,用collect_list(你的文件名列)生成包含所有目标文件名的数组,通过数据流的输出参数将这个数组传递给管道变量
  • 管道中的ForEach活动直接引用该变量作为迭代项,无需依赖GetMetadata获取子项
  • 优势:完全避免重复处理旧文件,因为每次迭代的都是本次数据流生成的精确文件名列表

方案2:用唯一运行ID标记新文件

给本次管道运行生成的文件添加唯一标识,精准筛选目标文件:

  • 数据流接收器的文件名设置为@concat(pipeline().RunId, '_', 你的列数据, '.csv'),利用ADF自动生成的RunId作为唯一前缀(每次管道运行的RunId不重复)
  • 配置存储数据集的文件名筛选规则为@concat(pipeline().RunId, '_*.csv'),这样GetMetadata只会获取本次运行生成的文件
  • ForEach处理完成后(无论API成功或失败),用复制活动或Azure CLI活动将文件移至归档或去掉RunId标记,避免后续被误筛选

方案3:按文件修改时间筛选新文件

通过时间范围过滤,只处理本次管道启动后生成的文件:

  • 管道定义参数RunStartTime,默认值设为@utcnow(),记录管道启动的UTC时间
  • GetMetadata获取存储账户的子项后,添加筛选活动,过滤条件设为@greater(item().LastModified, pipeline().parameters.RunStartTime)
  • ForEach仅处理筛选后的文件列表
  • 注意:需确保数据流生成文件的时间与RunStartTime的误差可忽略,若数据流耗时较长,可将RunStartTime改为数据流活动的实际启动时间

方案4:失败文件单独标记隔离

处理失败时给文件打标记,下次运行自动跳过:

  • 在API调用的失败分支中添加重命名文件活动,将失败文件重命名为@concat(item().Name, '_failed.csv')
  • 下次运行时,GetMetadata的数据集筛选规则排除*_failed.csv后缀的文件,只处理新生成的正常文件
  • 后续可通过单独的清理管道处理这些标记为失败的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:05:09