如何在Filter Activity中排除依赖失败上游管道的任务?
正确的Filter Activity筛选表达式及问题分析
问题根源
你的原表达式存在三个关键错误:
- 字段大小写/拼写不匹配:
- 元数据里的依赖字段是小写的
dependancy,但你用了item().Dependency(大写D) - GetFailures输出里的结果数组键是大写的
Value,但你用了output.value(小写v)
- 元数据里的依赖字段是小写的
- 仅检查单个失败管道:原表达式只取了失败列表的第一个元素
[0]['PipelineName'],无法处理多个上游管道失败的场景
正确筛选表达式
not(contains(activity('GetFailures').output.Value[*].PipelineName, item().dependancy))
表达式说明
activity('GetFailures').output.Value[*].PipelineName:提取所有失败上游管道的名称,生成一个数组(比如["PL_Main_1"]或["PL_Main_1", "PL_Main_2"])contains(..., item().dependancy):检查当前任务的依赖管道是否在失败列表中not(...):取反后,保留所有不依赖失败上游的任务(包括无依赖的PL_Dep_3)
验证场景
- 仅PL_Main_1失败时:
- PL_Dep_1的
dependancy是PL_Main_1,contains返回true,not后为false,被排除 - PL_Dep_2、PL_Dep_3被保留
- PL_Dep_1的
- PL_Main_1和PL_Main_2都失败时:
- PL_Dep_1、PL_Dep_2的依赖都在失败列表中,
not后为false,被排除 - 仅PL_Dep_3被保留
- PL_Dep_1、PL_Dep_2的依赖都在失败列表中,
内容的提问来源于stack exchange,提问作者user14796414
相关产品推荐
相关产品推荐

