【发布时间】:2019-12-13 09:26:42
【问题描述】:
我编写了一个查询,它根据 json 文件生成表。 json 文件有一个子部分是 json 数组,我似乎无法让我的表从 json 数组中获取值。
这是我尝试从以下位置创建表的 json 示例:
{"student": "1", "ai": [{"grade": "a", "term": 1}, {"grade": "b", "term": 2}], "year": "2017"}
表:
CREATE EXTERNAL TABLE student(
student string COMMENT 'from deserializer',
grade string COMMENT 'from deserializer',
term string COMMENT 'from deserializer',
year string COMMENT 'from deserializer')
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 'students.json'
我也尝试过ai.grade,但这没有帮助。
我得到的当前输出是: 学生年级学期 1 2017 1 2017
我想要的是:
student grade term year
1 a 1 2017
1 b 2 2017
请参阅picture,因为上面的结构可能没有显示。
【问题讨论】:
-
您是否尝试将
ai列映射到一行“成绩”和“学期”的数组?在 Hive 语法中,它类似于Array<struct<grade:string,term:string>>。 -
没有试过这个,它似乎可以工作,但它不会像我想要的那样单独输出结果,而是像
[{grade=a, term=1}, {grade=b, term=2}]一样显示它们
标签: sql arrays json database presto