Azure数据工厂:对象名称中的空格,用于分层架构映射

时间:2019-04-09 18:51:27

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

我正在使用“复制数据”活动将数据从REST服务复制到Azure SQL Server。 REST服务正在返回一个分层的JSON响应,我正在使用模式映射将其推送到SQL表中。除少数名称中带有空格的属性外,此功能正常运行。这是一个模式映射示例,其最后一个属性定义了一个相关的问题:

"translator": {
    "type": "TabularTranslator",
    "schemaMapping": {
        "id": "id",
        "type": "type",
        "lead_verb": "lead_verb",
        "lead_action_performed": "lead_action_performed",
        "created_at": "created_at",
        "lead_id": "lead_id",
        "selected_action": "selected_action",
        "rate_type": "rate_type",
        "channel_rate_id": "channel_rate_id",
        "tenant_id": "tenant_id",
        "unit_id": "unit_id",
        "created_by_id": "created_by_id",
        "source_id": "source_id",
        "lead_changes_humanized.Quoted Rate[1]": "lead_changes_humanized"
    },
    "collectionReference": "$.lead_events"
}

这会导致以下错误:

{
    "errorCode": "2200",
    "message": "ErrorCode=UserErrorInvalidJsonArrayPathDefinition,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when deserializing source JSON data. Please check whether the JsonPath in JsonNodeReference and JsonPathDefintion is valid.,Source=Microsoft.DataTransfer.Common,''Type=Newtonsoft.Json.JsonException,Message=Unexpected character while parsing path:  ,Source=Newtonsoft.Json,'",
    "failureType": "UserError",
    "target": "cpyCompaniesLeadEvents"
}

我尝试了如下引用路径:

"lead_changes_humanized.\"Quoted Rate\"[1]": "lead_changes_humanized"

并且,用单引号引起来:

"lead_changes_humanized.'Quoted Rate'[1]": "lead_changes_humanized"

所有这些都会导致相同的错误。我已经使用路径验证器验证了JSON路径。

问题:我该如何处理空白?

1 个答案:

答案 0 :(得分:0)

尝试过但未能跳过复制活动验证器。请考虑以下解决方法。

1。如果您可以完全控制其余api(名为A)的输出,请尝试将lead_changes_humanized.Quoted Rate[1]返回为lead_changes_humanized.Quoted_Rate[1]。如果不能,请创建另一个自己的其余api(名为B)。并在B rest api中调用A rest api,然后将输出作为lead_changes_humanized.Quoted_Rate[1]处理。

2。然后您可以通过此技巧跳过验证器。如果您确实担心json键的原始格式,请执行下一步。

3。在sql db端,您可以将数据从源数据复制到临时表。并在存储过程中恢复原始格式,以便可以将原始格式存储到准确的目标表中。我在以前的案例中所做的详细步骤:Azure Data Factory mapping 2 columns in one column引用它。