u-sql - 使用 U-SQL 解析多级 Json
问题描述
使用 u-sql 解析下面的 JSON 后,我想将其保存为 CSV - id、type、name、ppu、battername、batterid、battertype、toppingDate、toppingid、toppingtype。
我的代码从 id 到 ppu 字段都有效,但不能超出此范围。
示例 Json-
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{"battername":"NA",
"batter":
{
{ "batterid": "1001", "battertype": "Regular" },
{ "batterid": "1002", "battertype": "Chocolate" },
{ "batterid": "1003", "battertype": "Blueberry" },
{ "batterid": "1004", "battertype": "Devil's Food" }
}
},
"topping":
[{
"toppingDate": "2018-11-30T10:00:01",
"toppingValues": [
{ "toppingid": "5001", "toppingtype": "None" },
{ "toppingid": "5002", "toppingtype": "Glazed" },
{ "toppingid": "5005", "toppingtype": "Sugar" },
{ "toppingid": "5007", "toppingtype": "Powdered Sugar" },
{ "toppingid": "5006", "toppingtype": "Chocolate with" },
{ "toppingid": "5003", "toppingtype": "Chocolate" },
{ "toppingid": "5004", "toppingtype": "Maple" }
]}
}
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
DECLARE EXTERNAL @InputPath string = @"input.json";
DECLARE EXTERNAL @OutputPath string = @"output.csv";
@commonCookedInput =
EXTRACT id string,
type string,
name string,
ppu int?,
battername string,
batterid int?,
battertype string
FROM @InputPath
USING new MultiLevelJsonExtractor( "batters.id",
"batters.type",
"batters.name",
"batters.ppu",
"batters.battername",
"batters.batterid",
"batters.battertype"
);
OUTPUT @commonCookedInput
TO @OutputPath
USING Outputters.Csv(quoting: false,outputHeader:true);
解决方案
推荐阅读
- python - 如何在一行中搜索特定单词
- java - 一段时间后Mysql无法连接
- drupal - 无论如何检查Drupal中过去的日志?
- oracle - Tomcat to oracle channel 加密使用透明数据加密
- vue.js - 无法将 eva-icons 安装到 Vue-cli 项目
- if-statement - 以公式为条件的 if 子句
- ios - 无法使用本地化设置语言
- java - service.jar 中没有主要清单属性
- javascript - 使用 MS Graph 将 excel 转换为 pdf 返回错误文件
- java - java - 如何在具有3个表的记录的java中创建数据结构?