U-SQL-从复杂的嵌套json文件中提取数据
我的json结构如下所示:U-SQL-从复杂的嵌套json文件中提取数据,json,azure,u-sql,Json,Azure,U Sql,我的json结构如下所示: { “第一个”:“xxxx”, “国家”:“XX”, “循环”:{ “链接”:[ { “Url”:“xxxx”, “时间”:123 }, { “Url”:“xxxx”, “时间”:123 }], “总时间”:123, “日期”:“2018-04-09T10:29:39.0233082+00:00” } 我想提取属性 First Country Url & Time foreach object in the array TotalTime Date 这是我
{
“第一个”:“xxxx”,
“国家”:“XX”,
“循环”:{
“链接”:[
{
“Url”:“xxxx”,
“时间”:123
}, {
“Url”:“xxxx”,
“时间”:123
}],
“总时间”:123,
“日期”:“2018-04-09T10:29:39.0233082+00:00”
}
我想提取属性
First
Country
Url & Time foreach object in the array
TotalTime
Date
这是我的问题
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
@extration =
EXTRACT
jsonString string
FROM @"/storage-api/input.json"
USING Extractors.Tsv(quoting:false);
@cleanUp = SELECT jsonString FROM @extration WHERE (!jsonString.Contains("Part: h" ) AND jsonString!= "465}");
@jsonify = SELECT Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(jsonString) AS obj FROM @cleanUp;
@columnized = SELECT
obj["First"] AS first,
obj["Country"] AS country
FROM @jsonify;
OUTPUT @columnized
TO @"/storage-api/outputs/tpe1-output.csv"
USING Outputters.Csv();
但是这个查询只提取前2个属性,我不知道如何查询“Loop”中的嵌套数据您可以使用
multi-leveljsonextractor
(notes)和JSON路径如Loop.Links[*]
multi-leveljsonextractor
有一个很好的特性,如果在基本路径上找不到节点,它会递归地检查它,尽管我不确定在大型JSON文档或大量JSON文档上性能会如何扩展
试试这个:
DECLARE @input string = "/input/input65.json";
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
@result =
EXTRACT First string,
Country string,
Date DateTime,
Url string,
Time string,
TotalTime int
FROM @input
USING new MultiLevelJsonExtractor("Loop.Links[*]",
false,
"First",
"Country",
"Date",
"Url",
"Time",
"TotalTime"
);
OUTPUT @result
TO "/output/output.csv"
USING Outputters.Csv();
我的结果:
HTH谢谢,我不知道
multi-leveljsonextractor
class