Как прочитать файл json, разделенный строкой, из озера данных Azure и запросить с помощью usql

У меня есть данные ioT в структуре azure datalake как {date} / {month} / {day} / abbs. Json В каждом файле есть несколько записей, разделенных новой строкой .. Как прочитать эти данные с помощью usql и загрузить в таблицу и запрос.

Когда я загружаю его в таблицу usql с помощью ////.json, он загружает данные в ту же таблицу при добавлении новых файлов в файлы.

Я следил за документами qzure, но не нашел ответа на файл json, разделенный строками.


person Amjath Khan    schedule 27.12.2018    source источник
comment
Какие лазурные документы вы читали? И что запускает запрос u-sql (чтобы мы могли ответить на вторую часть)   -  person Peter Bons    schedule 27.12.2018
comment
google.com/amp/s/www.sqlchick.com/entries/2017/9/4/.   -  person Amjath Khan    schedule 27.12.2018
comment
taygan. co / blog / 2018/01/06 / Я прочитал все три части .. social.msdn.microsoft.com/ Форумы / azure / en-US /   -  person Amjath Khan    schedule 27.12.2018


Ответы (1)


В этом примере мы создадим таблицу для хранения событий:

CREATE TABLE dbo.Events  
(
     Event string
    ,INDEX cIX_EVENT CLUSTERED(Event ASC) DISTRIBUTED BY HASH(Event)
);

Затем, когда дело доходит до извлечения json и его вставки в базу данных:

Сначала вам нужно извлечь строки с помощью простого экстрактора текста, а затем вы можете его проанализировать. Например, дайте файл с json-объектами, разделенными новыми строками

{ "Event": "One" }
{ "Event": "Tow" }
{ "Event":  "Three"}

тогда этот скрипт извлечет события:

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

USING Microsoft.Analytics.Samples.Formats.Json;

@RawExtract = EXTRACT [RawString] string
    FROM @input
    USING Extractors.Text(delimiter:'\b', quoting : false);

@ParsedJSONLines = SELECT JsonFunctions.JsonTuple([RawString]) AS JSONLine
    FROM @RawExtract;

INSERT INTO Events  
SELECT JSONLine["Event"] AS Event
FROM @ParsedJSONLines;  

Позже вы можете прочитать из таблицы вот так:

@result =
    SELECT Event
    FROM Events;

OUTPUT @result
TO @output
USING Outputters.Csv(outputHeader : true, quoting : true);

Теперь, поскольку это INSERT IMTO, данные будут добавлены в таблицу.

Ресурсы:
Примеры на GitHub

Дополнительные примеры GitHub

person Peter Bons    schedule 27.12.2018