Azure数据工厂复制活动将JSON映射到SQL时出错
我有一个Azure Data Factory复制活动,它使用REST请求来弹性搜索作为源,并尝试将响应映射到作为接收器的SQL表。除了尝试映射包含动态JSON的Azure数据工厂复制活动将JSON映射到SQL时出错,azure,azure-data-factory,azure-data-factory-2,Azure,Azure Data Factory,Azure Data Factory 2,我有一个Azure Data Factory复制活动,它使用REST请求来弹性搜索作为源,并尝试将响应映射到作为接收器的SQL表。除了尝试映射包含动态JSON的数据字段外,其他一切都正常工作。我得到以下错误: { “错误代码”:“2200”, “message:“ErrorCode=UserErrorUnsupportedHierarchicalComplexValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryExcept
数据
字段外,其他一切都正常工作。我得到以下错误:
{
“错误代码”:“2200”,
“message:“ErrorCode=UserErrorUnsupportedHierarchicalComplexValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,message=检索到的数据JObject类型,值为{\“name\”:\“department\”}尚不支持,请删除目标列或启用“跳过不兼容行”以跳过它们。Source=Microsoft.DataTransfer.Common,“,
“failureType”:“UserError”,
“目标”:“复制内容”,
“详情”:[]
}
以下是我的映射配置示例:
"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
下
如何调整映射配置以使其正常工作?几天前我遇到了同样的问题。您需要将JSON对象转换为JSON字符串。它将解决您的映射问题(UserErrorUnsupportedHierarchicalComplexValue)
请尝试并告诉我是否也解决了您的错误。我在MSDN论坛上发布了这个问题,并且有人告诉我,如果您使用的是表格接收器,您可以设置此选项
“mapComplexValuesToString”:true
,它应该允许正确映射复杂的JSON属性。这解决了我的ADF复制活动问题。您的意思是要向映射配置添加某种转换吗?是的,我不知道用于从源收集数据的语言类型。但是,例如,如果您使用c#,可以执行如下操作:string jsonString=Newtonsoft.Json.JsonConvert.SerializeObject(jsonObject),或者您可以在映射配置中直接强制转换,如本例所示:源只是一个弹性后搜索查询。我认为在查询弹性搜索时,您无法进行任何类型的转换。唯一有效的内容类型头是application/json
。所以我不确定在这种情况下这样的转换是否可行。不幸的是,您不能在路径字段中进行直接转换。如果您尝试执行类似“source”:{“path”:“@string([''u source']['data'])”}