ADF ForEach循环内Copy Activity动态添加附加列配置报错解决问询
报错原因
这个2200错误是因为Copy Activity的additionalColumns属性要求输入固定结构的对象数组(每个元素必须包含name和value两个字段),你之前的配置要么是传入的动态值结构不符合要求,要么是静态列和动态表达式混写触发了类型解析错误。
正确配置步骤
- 第一步:预处理Lookup返回的结构
你循环依赖的Lookup表中,需要确保每个表对应的待添加列符合如下结构:
你可以直接把上述结构的JSON字符串存在Lookup表的字段里,或者在后续步骤里动态构造。[ {"name":"自定义列名1", "value":"列值1(支持动态表达式)"}, {"name":"自定义列名2", "value":"列值2(支持动态表达式)"} ] - 第二步:配置ForEach循环
ForEach的Items属性正常绑定Lookup的输出即可,示例表达式:@activity('你的Lookup活动名').output.value - 第三步:配置Copy Activity的附加列
打开Copy Activity的【源】配置页,找到附加列设置,不要手动添加任何静态列,直接点击附加列输入框右侧的动态表达式按钮,填写对应表达式:- 如果你的Lookup表中已经存了对应结构的JSON字符串,表达式写:
@json(item().你存附加列配置的字段名) - 如果需要每次循环临时构造附加列,直接用array函数构造符合要求的数组即可,示例(每次循环加加载时间和来源表名两个列):
@array( json(concat('{"name": "load_time", "value": "', utcNow(), '"}')), json(concat('{"name": "source_table", "value": "', item().table_path, '"}')) )
- 如果你的Lookup表中已经存了对应结构的JSON字符串,表达式写:
注意事项
- 不要同时添加静态附加列和动态表达式配置的附加列,两种配置方式不能混用
- 列值如果是字符串类型要确保引号转义正确,避免JSON解析失败
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

