Azure Copy Data工具封装后出现ForEach参数类型错误求助
错误核心原因
你遇到的问题本质是:父管道通过Execute Pipeline传递给子管道的cw_items参数实际是字符串类型,而非ForEach活动要求的数组类型。尽管你认为参数和原管道一致,但在跨管道传递环节,数组被当成了字符串格式(比如传递了"[a,b,c]"这类字符串,而非真正的数组[a,b,c])。
具体修复步骤
修正父管道的参数传递逻辑:
如果父管道的cw_items参数是从JSON字符串、API返回等环节获取的字符串格式数组,必须用@json()函数将其转换为数组后再传递给子管道。例如在Execute Pipeline的参数赋值框中填写:@json(pipeline().parameters.parent_cw_items)而非直接传递原始字符串参数。
确认子管道参数类型:
打开子管道的参数配置页面,确保cw_items的参数类型是数组,而非字符串。偶尔会出现参数类型被误修改的情况,导致接收的参数不符合要求。验证参数类型:
在父管道中添加一个Set Variable活动,将变量值设为@typeof(pipeline().parameters.cw_items),运行父管道查看输出结果。如果结果是String,说明必须用json()转换;如果是Array,则检查子管道的参数接收配置是否存在疏漏。
Operation on target ForEach_fzr failed: The execution of template action 'MainForEach_fzr' failed: the result of the evaluation of 'foreach' expression '@pipeline().parameters.cw_items' is of type 'String'. The result must be a valid array.
内容的提问来源于stack exchange,提问作者Alex

