簡體   English   中英

讀取行如何將 json 文件與 azure 數據湖分開並使用 usql 進行查詢

[英]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 示例

更多 GitHub 示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM