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

时间:2019-12-04 23:06:46

标签: azure azure-data-factory azure-data-factory-2

我有一个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下。

如何调整我的映射配置以使其正常工作?

2 个答案:

答案 0 :(得分:1)

我在MSDN论坛上发布了此问题,并被告知,如果您使用表格接收器,则可以设置此选项"mapComplexValuesToString": true,它应该允许正确地映射复杂的JSON属性。这解决了我的ADF复制活动问题。

答案 1 :(得分:0)

几天前我遇到了同样的问题。您需要将JSON对象转换为Json字符串。它将解决您的映射问题(UserErrorUnsupportedHierarchicalComplexValue)。

尝试一下,告诉我是否还能解决您的错误。