Azure ADL JSON файлы u-Sql ошибка: «Извлечь» на тип пользователя «Microsoft.Analytics.Samples.Formats.Json.MultiLevelJsonExtractor» - PullRequest
0 голосов
/ 26 апреля 2018

Когда я пытаюсь извлечь из файлов json, я получаю сообщение об ошибке:

adl Обнаружено необработанное исключение из кода пользователя при вызове метода «Извлечь» для типа пользователя «Microsoft.Analytics.Samples.Formats.Json.MultiLevelJsonExtractor»

Я установил сборку, но всегда получаю эту ошибку, когда пытаюсь выполнить работу с файлами .json.

Вот мой код:

REFERENCE ASSEMBLY BankingADLDB.[Newtonsoft.Json];
REFERENCE ASSEMBLY BankingADLDB.[Microsoft.Analytics.Samples.Formats]; 

USING Microsoft.Analytics.Samples.Formats.Json;

DECLARE @in string=@"adl://xxx.azuredatalakestore.net/14-04-2018/00_0_18144c820d664dfea18583f9ce515bd3.json";
DECLARE @out string=@"Test.csv";

@result =
     EXTRACT message string,
             messageTypeId string,
             providerTypeId string,
             identifier string,
             key string,
             extras string
     FROM @in
     USING new MultiLevelJsonExtractor("TranscriptionSections[*].Sentences[*]",
           false,
           "message",
           "messageTypeId",
           "providerTypeId",
           "identifier",
           "key",
           "extras");         

OUTPUT @result
TO @out 
USING Outputters.Csv();

Вот пример файла json:

{ "решение": "какашки", "сообщение": { "messageTypeId": 1, "providerTypeId": 1, "идентификатор": "1-7jh88", "записи": [{ "ключ":» userinfo "," value ": {" name ":" John Jo Carvalho "," пол ":" unknown "," birthDate ":" "," nif ":" "," email ":" sample@sample.me », "PHONENUMBER": "+ 351789582471", "userLocation": { "адрес": "", "город": "Лиссабон", "PostalCode": "", "страна": "Португалия"}, "photoUrl" : "https://xxx.jpg"}}],"extras":[]},"EventProcessedUtcTime":"2018-04-14T00:00:19.2501003Z","PartitionId":1,"EventEnqueuedUtcTime":"2018-04-14T00:00:19.1970000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"1-7jh88","ConnectionDeviceGenerationId":"123456789123456789","EnqueuedTime":"2018-04-14T00:00:19.0120000Z","StreamId":null}}

1 Ответ

0 голосов
/ 28 апреля 2018

Для фактического json, который вы указали, я смог выполнить эту работу с немного другим путем json, то есть messages.entries[*]:

@result =
     EXTRACT 
//            message string,
             messageTypeId string,
             providerTypeId string,
             identifier string,
             key string,
             extras string
     FROM @in
     //USING new MultiLevelJsonExtractor("TranscriptionSections[*].Sentences[*]",
     USING new MultiLevelJsonExtractor("message.entries[*]",
             true,
//           "message",
           "messageTypeId",
           "providerTypeId",
           "identifier",
           "key",
           "extras");  

Я удалил столбец message из оператора EXTRACT, так как в терминах json это объект, содержащий другие элементы.

Мои результаты:

My Results

...