我正在尝试将数据从json文件复制到数据库。数据库上有两列需要使用相同的json字段填充。但是,如果我执行此映射,则在运行活动时会出现错误:An item with the same key has already been added
。是不是可以做这一对多的映射?
答案 0 :(得分:5)
在ADF中尚不支持将源数据集架构中的一列映射到目标中的多个列。
但是还有其他方法可以实现这一点,方法是更改源数据集架构以使其具有重复列。然后,您可以使用这些重复列映射到差异目标列。
与SQL数据集类似,您可以使用sql查询,例如"选择column1作为column1A,column1作为column1B从xxx"获取源数据集中的重复列。然后,您可以将column1A映射到destCol1,将column1B映射到destCol2。
对于这种情况下的JSON文件,您可以使用jsonPathDefinition来定义重复列。 参考https://docs.microsoft.com/en-us/azure/data-factory/supported-file-formats-and-compression-codecs#json-format
例如,您有一个格式为
的json{"a":1,"b":2}
然后您可以设置数据集格式属性,如
"format": {
"type": "JsonFormat",
"filePattern": "setOfObjects",
"jsonPathDefinition": {
"a1": "$.['a']",
"b": "$.['b']",
"a2": "$.['a']"
}
},
它将在源数据集模式中创建3列a1,b,a2,其中a1和a2引用相同的json字段a。然后,您将能够将这些列映射到目标中的不同列。
由于