嵌套 JSON - Azure 数据湖 - U-SQL 提取到 CSV
Nested JSON - Azure Data Lake - U-SQL Extraction to CSV
我尝试了不同的方法从我的 JSON 文件中提取数据并在 U-SQL 中转换为 CSV,但它们似乎都生成空文件或只输出 header 行.
我之前尝试过 JSON 元组,但由于生成了空文件,我现在正在尝试使用 MultiLevelJsonExtractor。
我的 JSON 文件结构如下:
{
"responseHeader":{
"status":0,
"QTime":25,
"params":{
"q":"query",
"rows":"7000",
"wt":"json"
}
},
"response":{
"docs":[
{
"uri":"www.google.com",
"date_dt":"2017-05-30T23:00:00Z",
"title":"Google"
},
{
"uri":"www.yahoo.com",
"date_dt":"2017-03-30T23:00:00Z",
"title":"Yahoo"
}
]
}
}
我当前的代码:
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
DECLARE @INPUT_FILE string = @"{*}.json";
DECLARE @OUTPUT_FILE string = @"/Output/Output.csv";
@json =
EXTRACT
uri string,
date_dt string,
title string,
FROM
@INPUT_FILE
USING new MultiLevelJsonExtractor("docs[*]", true, "uri", "date_dt", "title");
OUTPUT @json
TO @OUTPUT_FILE
USING Outputters.Csv(outputHeader:true,quoting:true);
这只是输出 header 行。我引用多个文件的方式有问题吗?例如 {*}.json?
我只是想从每个 JSON 文件中提取 docs 节点集中的三个字段并输出到 CSV。
您希望 .csv 在输出中的外观如何?我刚刚将 json 路径更改为 response.docs[*]
并为您的示例 json 获取了两行,即
@json =
EXTRACT uri string,
date_dt string,
title string
FROM @INPUT_FILE
USING new MultiLevelJsonExtractor("response.docs[*]", true, "uri", "date_dt", "title");
我的结果:
我尝试了不同的方法从我的 JSON 文件中提取数据并在 U-SQL 中转换为 CSV,但它们似乎都生成空文件或只输出 header 行.
我之前尝试过 JSON 元组,但由于生成了空文件,我现在正在尝试使用 MultiLevelJsonExtractor。
我的 JSON 文件结构如下:
{
"responseHeader":{
"status":0,
"QTime":25,
"params":{
"q":"query",
"rows":"7000",
"wt":"json"
}
},
"response":{
"docs":[
{
"uri":"www.google.com",
"date_dt":"2017-05-30T23:00:00Z",
"title":"Google"
},
{
"uri":"www.yahoo.com",
"date_dt":"2017-03-30T23:00:00Z",
"title":"Yahoo"
}
]
}
}
我当前的代码:
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
DECLARE @INPUT_FILE string = @"{*}.json";
DECLARE @OUTPUT_FILE string = @"/Output/Output.csv";
@json =
EXTRACT
uri string,
date_dt string,
title string,
FROM
@INPUT_FILE
USING new MultiLevelJsonExtractor("docs[*]", true, "uri", "date_dt", "title");
OUTPUT @json
TO @OUTPUT_FILE
USING Outputters.Csv(outputHeader:true,quoting:true);
这只是输出 header 行。我引用多个文件的方式有问题吗?例如 {*}.json?
我只是想从每个 JSON 文件中提取 docs 节点集中的三个字段并输出到 CSV。
您希望 .csv 在输出中的外观如何?我刚刚将 json 路径更改为 response.docs[*]
并为您的示例 json 获取了两行,即
@json =
EXTRACT uri string,
date_dt string,
title string
FROM @INPUT_FILE
USING new MultiLevelJsonExtractor("response.docs[*]", true, "uri", "date_dt", "title");
我的结果: