You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory复制活动映射:一对多映射报错咨询

解决Azure Data Factory中同一JSON字段映射到多列的报错问题

你碰到的这个「An item with the same key has already been added」报错,本质是ADF复制活动的默认映射逻辑在“源字段键唯一性”上的限制——当你直接把同一个JSON字段映射到两个目标列时,映射规则里会出现重复的源字段键,触发了这个重复键检查的错误。但这并不代表ADF不支持一对多映射,只是得换个方式实现:

两种可行的解决方案

方案一:用Data Flow的派生列转换(推荐,灵活度高)

如果你的流水线可以引入Data Flow组件,这是最直观的解决办法:

  • 在Data Flow里添加派生列转换节点
  • 针对需要填充的两个数据库列,分别创建派生列,每个列的表达式都直接引用同一个JSON源字段(比如$."target-json-field",具体语法根据你的JSON结构调整)
  • 最后用Sink节点把处理后的数据写入数据库,这样同一个源字段就能同时给到两个目标列,完全不会触发重复键的问题。

方案二:在复制活动中用动态表达式映射

要是你只想用复制活动不想引入Data Flow,可以通过动态内容绕开重复键限制:

  • 进入复制活动的「映射」标签页,先删掉重复的源字段映射项
  • 第一个目标列正常选择对应的JSON源字段做映射
  • 第二个目标列不要直接选源字段,点击「添加动态内容」,输入表达式来引用同一个源字段(比如@item().yourJsonField,如果是嵌套JSON可能需要调整路径,比如@item().parentField.childField)
    这种方式相当于通过动态计算生成第二个列的值,而不是直接复用源字段的映射键,就能避开ADF的重复键检查。

另外提个小注意点:如果你的JSON数据源是通过数据集定义的,确保数据集的结构配置没有限制重复引用同一字段;如果是动态数据源(比如REST API返回的JSON),表达式的路径写法可能需要根据实际返回结构微调,但核心思路都是避免在映射字典里出现重复的源键。

内容的提问来源于stack exchange,提问作者Alejandro B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:57:43