Фабрика данных Azure: пробелы в имени объекта для сопоставления иерархической схемы - PullRequest
1 голос
/ 09 апреля 2019

Я использую операцию «Копировать данные» для копирования данных из службы 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 голосов
/ 10 апреля 2019

Пробовал, но не смог пропустить валидатор активности копирования. Пожалуйста, рассмотрите обходной путь, как показано ниже.

1.Если вы можете полностью контролировать вывод остальных API (названных A), попробуйте вернуть lead_changes_humanized.Quoted Rate[1] как lead_changes_humanized.Quoted_Rate[1]. Если вы не можете, создайте другой собственный API остальных (названный B) и вызовите A rest api внутри B rest api, затем обработать вывод как lead_changes_humanized.Quoted_Rate[1].

2. Затем вы можете пропустить валидатор с помощью этого трюка. Если вы действительно относитесь к исходному формату ключа json, сделайте следующий шаг.

3. На стороне sql db вы можете скопировать данные из исходных данных во временную таблицу. И восстановить исходный формат в хранимой процедуре, чтобы вы могли сохранить исходный формат в точной целевой таблице. подробные шаги, которые я делал в предыдущем случае: фабрика данных Azure, отображающая 2 столбца в одном столбце ссылается на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...