【发布时间】:2017-09-20 21:04:40
【问题描述】:
我正在尝试使用蜂巢中的外部爆炸将不存在的数据设为空,但我的查询没有返回任何内容。 编辑 : 表 - 年份字符串,公司排名
year:string,topcompanies:array<struct<name:string,rank:string>>
样本数据 编辑:
2015,
"topcompanies":[
{"name":"apple","rank":"1"},
{"name":"samsung","rank":"2"},
{"name":"SONY","rank":"3"},
]
2016,
"topcompanies":[
{"name":"apple","rank":"1"},
{"name":"samsung","rank":"2"},
{"name":"SONY","rank":"3"},
{"name":"LG","rank":"4"}
]
查询获取数据
select year, rank1, rank2, rank3, rank4
FROM companyrank
LATERAL VIEW outer explode(topcompanies) rank1_t as rank1_v
LATERAL VIEW outer explode(topcompanies) rank2_t as rank2_v
LATERAL VIEW outer explode(topcompanies) rank3_t as rank3_v
LATERAL VIEW outer explode(topcompanies) rank4_t as rank4_v
WHERE
(rank1_v.rank = 1 or rank1_v.rank is null)
AND (rank2_v.rank = 2 or rank2_v.rank is null)
AND (rank3_v.rank = 3 or rank3_v.rank is null)
AND (rank4_v.rank = 4 or rank4_v.rank is null)
预期输出-
expected output when rank4 does not exists
year rank1 rank2 rank3 rank4
2016 apple samsung SONY null
如果rank4数据存在则
year rank1 rank2 rank3 rank4
2015 apple samsung SONY LG
编辑:
我需要获得每年的所有 4 个排名,如果任何一个排名不存在,那么排名应该显示为 NULL。
【问题讨论】: