Синтаксическая ошибка в сценарии U-SQL для получения данных из сложного типа JSON

Это мой входной файл JSON.

[
  {
    "Tag": "STACK007",
    "data": [
      {
        "item": "UNIFY109",
        "timestamp": "2018-08-27T17:28:51.8490000Z",
        "jsonVersion": 1,
        "messageType": 1,
        "velocity": 709
      }
    ],
    "EventProcessedUtcTime": "2018-08-27T17:36:17.5519639Z",
    "EventEnqueuedUtcTime": "2018-08-27T17:28:52.0010000Z"
  }
]

Я пытаюсь преобразовать этот входной файл JSON в CSV. Вот мой скрипт U-SQL

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

USING Microsoft.Analytics.Samples.Formats.Json;

DECLARE @input string = @"/demodata/logs/2018/08/input.json";

@json = 
EXTRACT 
        Tag string, 
        EventProcessedUtcTime DateTime,
        EventEnqueuedUtcTime DateTime,
        JsonFunctions.JsonTuple(data) AS data
  FROM @input 
USING new JsonExtractor();

@result =
SELECT Tag,          
       address["velocity"]AS Velocity,
       address["messageType"]AS MessageType,
       address["timestamp"]AS Timestamp
FROM @json;

OUTPUT @result
TO "/output/demooutput.csv"
USING Outputters.Csv();

Этот скрипт выдает синтаксическую ошибку с сообщением "синтаксическая ошибка. Ожидается одно из: '.' "

Как я могу это исправить?


person MAK    schedule 28.08.2018    source источник
comment
Пожалуйста, определите столбцы, которые вы хотите в ваших CSV-файлах.   -  person Waqas Idrees    schedule 30.08.2018


Ответы (1)


Я обнаружил, что на это был дан ответ ранее:

@resultset = 
    EXTRACT 

        item string, 
        jsonversion int, 
        messageType int, 
        velocity float
    FROM @input
   USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("data[*]");

Это ответ Майкла Риса на этот вопрос о стеке: U - SQL не может извлечь данные из файла JSON

"На самом деле JSONExtractor поддерживает параметр rowpath, выраженный в JSONPath, что дает вам возможность идентифицировать объект JSON или элементы массива JSON, которые вы хотите отобразить в строки. Таким образом, вы можете извлечь данные с помощью одного оператора из ваш документ JSON"

person MAK    schedule 28.08.2018