嗨,我有一张Hive桌
select a,b,c,d from riskfactor_table
In the above table B, C and D columns are array columns. Below is my Hive DDL
Create external table riskfactor_table
(a string,
b array<string>,
c array<double>,
d array<double> )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '~'
stored as textfile location 'user/riskfactor/data';
以下是我的表格数据:
id400s,[“jms”,“jndi”,“jaxb”,“jaxn”],[100200300400],[1,2,3,4]
id200n,[“一”,“二”,“三”],[212352418],[6,10,8]
如果要拆分数组列,如何拆分?
如果我使用explode函数,我只能为一列拆分数组值
从riskfactor\表中选择explode(b)作为b;
输出:
jms
jndi
jaxb
jxn
one
two
three
但我想用下面的一个select语句填充所有列-
查询-从风险系数中选择a、b、c、d;
输出:
row1- ID400S jms 100 1
row2- ID400S jndi 200 2
row3- ID400S jaxb 300 3
row4- ID400S jaxn 400 4
如何填充所有数据?
3条答案
按热度按时间e1xvtsh31#
我也在寻找同样问题的答案。谢谢杰罗姆,为这个砖房解决方案。
我不得不做一个小小的改变(将别名“n1添加为n”)如下,以使其适用于我的案例:
唯一的事情是我必须事先知道有10个元素要爆炸。
sigwle7e2#
您可以使用侧视图来实现这一点
想知道更多细节,就扔吧。
yyhrrdl83#
使用brickhouse的“numeric\u range”自定义项。下面是一篇描述细节的博客文章。
https://brickhouseconfessions.wordpress.com/2013/03/07/exploding-multiple-arrays-at-the-same-time-with-numeric_range/
在您的情况下,您的查询将类似于