Azure Synapse复制Upsert键参数化报错及多列配置咨询
Synapse Copy Upsert键参数化问题解决方案
错误原因
你遇到的Expression of type: 'String' does not match the field: 'writeBehaviorKeys'. Expected type is 'Array' or 'Object'错误,核心原因是:Synapse Copy活动中Upsert对应的writeBehaviorKeys字段要求传入数组或对象类型,但你当前传入的管道参数是字符串类型,类型不匹配导致报错。
单列/多列参数化配置方法
不管是单列还是多列作为Upsert键,都可以通过以下两种方式实现参数化:
方式1:将管道参数定义为数组类型(推荐)
- 在管道参数配置里,把
Upsert_Column_1的类型设置为数组。 - 配置参数值:
- 单列场景:填写
["列名"](比如["user_id"]) - 多列场景:填写
["列名1", "列名2"](比如["user_id", "order_no"])
- 单列场景:填写
- 在Copy活动的目标配置中,直接引用表达式:
@pipeline().parameters.Upsert_Column_1
方式2:用字符串参数结合split函数转数组
如果必须使用字符串类型的参数:
- 管道参数
Upsert_Column_1的值用逗号分隔列名,比如单列填user_id,多列填user_id,order_no。 - 在Copy活动的目标配置中,使用表达式将字符串转为数组:
@split(pipeline().parameters.Upsert_Column_1, ',')
官方文档相关说明(翻译)
在Fabric数据工厂的Azure Synapse Analytics复制活动目标配置中,当选择Upsert写入行为时,需指定
writeBehaviorKeys字段,该字段接受数组或对象类型,用于定义作为Upsert匹配依据的列名列表。
内容的提问来源于stack exchange,提问作者rp346
相关产品推荐
相关产品推荐

