如何将地图转换为蜂巢中的列?
Posted
技术标签:
【中文标题】如何将地图转换为蜂巢中的列?【英文标题】:How to convert map to column in hive? 【发布时间】:2019-12-19 13:42:10 【问题描述】:假设我们有
columnsA columnsB
1 'A':22,'B':11
2 'A':13,'C':24
如何转换成
columnsA A B C
1 22 11 NA
2 13 NA 24
【问题讨论】:
【参考方案1】:使用Map[key] operator
select m['A'] A,
m['B'] B,
m['C'] C
from (select str_to_map("A:22,B:11") m) s;
返回:
A B C
22 11 NULL
如果您需要 'NA' 而不是 NULL,请使用 NVL() 函数:
NVL(m['A'],'NA') as A
【讨论】:
非常感谢!并且 B 列中有 200 多个离散值。有没有其他办法? @takashi 另一种方式可以使用lateral view outer explode(mapCol) s as key, val;
,就像在这个答案中一样:***.com/a/54960324/2700344 但之后您还需要根据键将 (key, val) 转置到列,这可以是使用条件聚合完成。使用 map[key] 会更简单高效以上是关于如何将地图转换为蜂巢中的列?的主要内容,如果未能解决你的问题,请参考以下文章