[英]How read line separated json file from azure data lake and query using usql
我在 azure datalake 結構中有物聯網數據作為 {date}/{month}/{day}/abbs。 Json 每個文件都有多條記錄,用換行符分隔。如何使用 usql 讀取此數據並加載到表中並進行查詢。
當我使用 / / / / .json 將其加載到 usql 表中時,將在新文件添加到文件時將數據加載到同一個表中。
我已經關注了 qzure 文檔,但沒有找到任何對行分隔的 json 文件的答案。
在這個例子中,我們將創建一個表來存儲事件:
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 示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.