繁体   English   中英

嵌套JSON-Azure数据湖-U-SQL提取到CSV

[英]Nested JSON - Azure Data Lake - U-SQL Extraction to CSV

我尝试了不同的方法从JSON文件中提取数据并在U-SQL中将其转换为CSV,但是它们似乎都可以生成空文件或仅输出标题行。

我以前尝试使用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);

这只是输出标题行。 我引用多个文件的方式是否存在问题? 例如{*}。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");

我的结果:

我的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM