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

如何使用ADF检查Blob存储两个文件夹内是否均存在5个指定文件

ADF实现Blob存储文件校验等待的具体方案
  • 第一步:提前定义管道参数与变量
    先在ADF管道画布空白处点开参数面板,定义以下参数:
    • 两个Blob目标文件夹的路径参数:folder1Path、folder2Path,直接填你存储里两个文件夹的实际路径即可
    • 必填文件列表参数:requiredFileList,类型选Array,值填你要求必须存在的5个文件名,示例值["orders_2024.csv","users_2024.csv","products_2024.csv","detail_2024.csv","summary_2024.csv"],替换成你的实际文件名即可
    • 轮询间隔参数:pollIntervalSeconds,类型选Int,默认值设为60,即每1分钟校验一次,避免频繁请求存储产生不必要的开销
      再切到变量面板,新建两个布尔类型变量:folder1AllFilesExist、folder2AllFilesExist,初始值统一设为false,用来存储两个文件夹的校验结果。
  • 第二步:添加Until循环活动作为核心等待逻辑容器
    把Until活动拖到画布,设置活动的循环终止条件为两个文件夹的校验结果均为true,条件表达式如下:
    @and(equals(variables('folder1AllFilesExist'), true), equals(variables('folder2AllFilesExist'), true))
    同时给Until活动设置合理的超时时间,比如7.00:00:00代表最长等待7天,避免异常情况下无限循环产生额外费用。
  • 第三步:在Until活动内部实现单轮次文件校验
    点开Until活动的内部编辑画布,按顺序添加以下活动:
    1. 两个「获取元数据」活动:分别绑定你Blob存储对应的参数化数据集,数据集路径分别传入folder1Path、folder2Path参数,两个活动的「字段列表」都勾选Child items,用来拉取对应文件夹下的所有文件列表。
    2. 两个「设置变量」活动:第一个活动给folder1AllFilesExist变量赋值,第二个给folder2AllFilesExist变量赋值。赋值逻辑为:判断拉取到的文件夹文件列表,是否包含所有必填的5个文件,给第一个变量赋值的表达式参考:
      @equals(intersection(pipeline().parameters.requiredFileList, select(activity('Get Metadata Folder1').output.childItems, item().name)), pipeline().parameters.requiredFileList)
      第二个变量的赋值逻辑完全一致,只需要把表达式里的Get Metadata活动名改成第二个获取元数据活动的名称即可。
      这里用intersection取必填文件列表和实际文件列表的交集,如果交集结果和必填文件列表完全相等,就证明所有要求的文件都已存在,文件夹里多出来的其他文件不会影响校验结果
    3. 一个「等待」活动:等待时长绑定之前定义的pollIntervalSeconds参数,作用是如果当前轮次校验没通过,就等待设定的间隔时间再进入下一轮校验,避免请求过于频繁。
  • 第四步:对接后续业务流程
    把你需要在文件齐全后执行的所有后续活动,直接接在Until活动的出口即可。当Until活动退出循环时,就代表两个文件夹的5个指定文件已经全部到位,后续流程会自动触发执行。

补充注意:如果你的单文件体积较大,存在文件还在上传过程中就被元数据活动扫描到的可能,可以在校验逻辑里额外增加文件大小判断,或者要求业务侧上传完所有目标文件后,额外上传一个空的.complete标识文件,把这个标识文件也加入必填文件列表,避免读取到未上传完成的残缺文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:18:32