我有一个Azure数据工厂复制活动,该活动使用REST请求进行弹性搜索作为源,并尝试将响应映射到Sink作为SQL表。除非尝试映射包含动态JSON的data
字段,否则一切工作正常。我收到以下错误:
{ “ errorCode”:“ 2200”, “ message”:“ ErrorCode = UserErrorUnsupportedHierarchicalComplexValue,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message =不支持使用值{\”名称\“:\”部门\“}检索到的数据JObject类型,请删除目标列或启用“跳过不兼容的行”以跳过它们。,Source = Microsoft.DataTransfer.Common,'“, “ failureType”:“ UserError”, “ target”:“ CopyContents_Paged”, “细节”: [] }
这是我的映射配置的示例:
"type": "TabularTranslator",
"mappings": [
{
"source": {
"path": "['_source']['id']"
},
"sink": {
"name": "ContentItemId",
"type": "String"
}
},
{
"source": {
"path": "['_source']['status']"
},
"sink": {
"name": "Status",
"type": "Int32"
}
},
{
"source": {
"path": "['_source']['data']"
},
"sink": {
"name": "Data",
"type": "String"
}
}
],
"collectionReference": "$['hits']['hits']"
}
data
对象中的JSON是动态的,因此我无法对其内的嵌套字段进行显式映射。这就是为什么我试图将整个JSON对象存储在SQL表的列中的data
下。
如何调整我的映射配置以使其正常工作?
答案 0 :(得分:1)
我在MSDN论坛上发布了此问题,并被告知,如果您使用表格接收器,则可以设置此选项"mapComplexValuesToString": true
,它应该允许正确地映射复杂的JSON属性。这解决了我的ADF复制活动问题。
答案 1 :(得分:0)
几天前我遇到了同样的问题。您需要将JSON对象转换为Json字符串。它将解决您的映射问题(UserErrorUnsupportedHierarchicalComplexValue)。
尝试一下,告诉我是否还能解决您的错误。