Azure Data Factory子管道返回值传递至父管道Switch出错排查
问题分析与解决步骤
核心原因
报错说明子管道返回的pipelineReturnValue为空对象,父管道无法读取RowsCopied属性。以下是你可能遗漏的配置:
子管道返回值配置错误
ADF中子管道无法通过普通Set Variable/Set Row Count活动直接传递返回值,必须用以下两种方式之一:- 添加Return Activity:在子管道末尾插入Return Activity,将其
Value设为@activity('Copy Delta to Blob').output.rowsCopied。 - 设置管道级返回值:点击子管道画布空白处打开属性面板,找到「Pipeline return value」字段,输入
@activity('Copy Delta to Blob').output.rowsCopied。
- 添加Return Activity:在子管道末尾插入Return Activity,将其
未启用调用活动的等待完成选项
父管道Switch活动内的「Integration Deltas」(调用子管道的Execute Pipeline活动)必须勾选Wait on completion。如果未勾选,父管道会在子管道未执行完毕时就尝试读取返回值,此时pipelineReturnValue为空,触发错误。表达式大小写不匹配
ADF属性名称区分大小写,子管道返回的是小写开头的rowsCopied,但父管道表达式里写的是大写开头的RowsCopied,导致无法匹配。将父管道表达式改为@activity('Integration Deltas').output.pipelineReturnValue.rowsCopied,如果返回的是单个数值,直接用@activity('Integration Deltas').output.pipelineReturnValue即可。Copy活动输出验证
检查子管道内「Copy Delta to Blob」活动的执行日志,确认其output中确实存在rowsCopied属性。如果Copy活动未执行(如被跳过、触发条件不满足)或执行失败,该属性不会存在,导致返回值为空。
内容的提问来源于stack exchange,提问作者Raymondo
相关产品推荐
相关产品推荐

