[英]Parse json file in U-SQL
我正在嘗試使用USQL解析Json文件,但不斷收到錯誤。
Json file@
{"dimBetType_SKey":1,"BetType_BKey":1,"BetTypeName":"Test1"}
{"dimBetType_SKey":2,"BetType_BKey":2,"BetTypeName":"Test2"}
{"dimBetType_SKey":3,"BetType_BKey":3,"BetTypeName":"Test3"}
下面是USQL腳本,我正在嘗試從上面的文件中提取數據。
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
DECLARE @Full_Path string =
"adl://xxxx.azuredatalakestore.net/2017/03/28/00_0_66ffdd26541742fab57139e95080e704.json";
DECLARE @Output_Path = "adl://xxxx.azuredatalakestore.net/Output/Output.csv";
@logSchema =
EXTRACT dimBetType_SKey int
FROM @Full_Path
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
OUTPUT @logSchema
TO @Output_Path
USING Outputters.Csv();
但是USQL在Vertex錯誤時仍然失敗
有幫助嗎?
這可能是因為您在文件的每個新行上都有新的JSON塊。 這意味着您需要以稍微不同的方式解析它而不是直接的JSON文件。
首先嘗試使用文本提取器,使用新的行分隔符引入每個JSON元素。 像這樣...
DECLARE @Full_Path string = "etc"
@RawExtract =
EXTRACT
[RawString] string,
[FileName] string //optional, see below
FROM
@Full_Path
USING
Extractors.Text(delimiter:'\b', quoting : false);
然后使用您引用的程序集粉碎JSON,但使用JSON元組方法。 像這樣...
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
@ParsedJSONLines =
SELECT
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple([RawString]) AS JSONLine,
[FileName]
FROM
@RawExtract
接下來,獲取值。 像這樣...
@StagedData =
SELECT
JSONLine["dimBetType_SKey"] AS dimBetType_SKey,
JSONLine["BetType_BKey"] AS BetType_BKey,
JSONLine["BetTypeName"] AS BetTypeName
[FileName]
FROM
@ParsedJSONLines;
最后,將輸出輸出為CSV或其他任何內容。
DECLARE @Output_Path string = "etc"
OUTPUT @StagedData
TO @Output_Path
USING Outputters.Csv();
作為旁注,您不需要引用完整的數據湖存儲路徑。 分析引擎知道存儲的根目錄在哪里,所以你可以用這個替換你的變量......
DECLARE @Full_Path string = "/2017/03/28/{FileName}";
希望這有助於排序您的問題。
對於您的信息,ADF可以幫助您輕松地從JSON(JSON格式)復制為CSV(文本格式)。 說明可參考: https : //docs.microsoft.com/en-us/azure/data-factory/data-factory-faq#specifying-formats
復制向導可以幫助您預覽數據並通過UI設置管道。 https://docs.microsoft.com/en-us/azure/data-factory/data-factory-copy-data-wizard-tutorial
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.