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



>我正在使用复制数据活动将数据从 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.如果您可以完全控制其余 api(名为 A(输出,请尝试将lead_changes_humanized.Quoted Rate[1]作为 lead_changes_humanized.Quoted_Rate[1] 返回。如果不能,请创建另一个自己的 rest api(名为 B(,并在 B rest API 中调用 A rest api,然后将输出处理为 lead_changes_humanized.Quoted_Rate[1]

2.然后你可以用这个技巧跳过验证器。如果您确实关注 json 密钥的原始格式,请执行下一步。

3.在sql db端,您可以将源数据中的数据复制到临时表中。并在存储过程中还原原始格式,以便可以将原始格式存储到确切的目标表中。我在以前的案例中执行了非常详细的步骤:Azure 数据工厂映射一列中的 2 列引用它。

相关内容

  • 没有找到相关文章

最新更新