ADF管道变量返回值传递问题:子管道参数表达式报错
解决Child Pipeline分支输出变量不存在导致的表达式计算错误
问题核心:Child Pipeline1的If分支仅在对应分支生成输出变量(True分支输出variable1,False分支输出variable2),但ChildPipeline2的@or()表达式直接引用两个变量,走False分支时因variable1不存在触发计算报错。
修复方案
方案1:使用exists()函数做存在性校验
修改ChildPipeline2的参数表达式,先通过exists()检查变量是否存在,再决定取值:
@or( exists(activity('childpipeline1').output.pipelinereturnvalue, 'variable1') ? activity('childpipeline1').output.pipelinereturnvalue.variable1 : false, exists(activity('childpipeline1').output.pipelinereturnvalue, 'variable2') ? activity('childpipeline1').output.pipelinereturnvalue.variable2 : false )
逻辑:如果变量存在则取其值,不存在则返回false,避免因引用不存在的键导致报错。
方案2:统一Child Pipeline1的输出结构
调整Child Pipeline1的分支逻辑,让两个分支都输出variable1和variable2:
- True分支:设置
variable1为目标值,variable2设为false - False分支:设置
variable2为目标值,variable1设为false
这样ChildPipeline2的原表达式可直接正常运行,因为两个变量始终存在于输出中。
内容的提问来源于stack exchange,提问作者Sowmya thota
相关产品推荐
相关产品推荐

