Saz*_*Saz 7 json azure azure-data-factory azure-data-lake 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"}
Run Code Online (Sandbox Code Playgroud)
下面是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();
Run Code Online (Sandbox Code Playgroud)
但是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);
Run Code Online (Sandbox Code Playgroud)
然后使用您引用的程序集粉碎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
Run Code Online (Sandbox Code Playgroud)
接下来,获取值.像这样...
@StagedData =
SELECT
JSONLine["dimBetType_SKey"] AS dimBetType_SKey,
JSONLine["BetType_BKey"] AS BetType_BKey,
JSONLine["BetTypeName"] AS BetTypeName
[FileName]
FROM
@ParsedJSONLines;
Run Code Online (Sandbox Code Playgroud)
最后,将输出输出为CSV或其他任何内容.
DECLARE @Output_Path string = "etc"
OUTPUT @StagedData
TO @Output_Path
USING Outputters.Csv();
Run Code Online (Sandbox Code Playgroud)
作为旁注,您不需要引用完整的数据湖存储路径.分析引擎知道存储的根目录在哪里,所以你可以用这个替换你的变量......
DECLARE @Full_Path string = "/2017/03/28/{FileName}";
Run Code Online (Sandbox Code Playgroud)
希望这有助于排序您的问题.
归档时间: |
|
查看次数: |
2158 次 |
最近记录: |