Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure数据工厂复制活动将JSON映射到SQL时出错_Azure_Azure Data Factory_Azure Data Factory 2 - Fatal编程技术网

Azure数据工厂复制活动将JSON映射到SQL时出错

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

我有一个Azure Data Factory复制活动,它使用REST请求来弹性搜索作为源,并尝试将响应映射到作为接收器的SQL表。除了尝试映射包含动态JSON的
数据
字段外,其他一切都正常工作。我得到以下错误:

{ “错误代码”:“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'])”}