分解配置单元中的结构数组是通过以下语法完成的。
col1 col2 col3 col4
A1 29 [{"M1":"P1","M2":"-1","M3":"22","M4":"0"},{"M1":"PE","M2":"136","M3":"95","M4":"0.25"}] [{"M5":"10","M6":1},{"M5":"11","M6":2}]
A2 2 [{"M1":"P1","M2":"-1","M3":"10","M4":"-0.13"}] [{"M5":"5","M6":1}]
A3 6 NULL NULL
A4 2 NULL NULL
A5 3 NULL NULL
select
col1,
col2,
explode_col3.M1,
explode_col3.M2,
explode_col3.M3,
explode_col3.M4
from table1
LATERAL VIEW explode(col3) exploded_table as explode_col3;
如何分解多个数组col3,col4?
col3&col4是一个具有相同记录数的数组。在下面的场景中,第一行在col3和col4中有2条记录,而第二行在col3和col4中有1条记录。col3中的第一条记录Map到col4中的第一条记录,其他记录也是如此。
输出是:
col1 col2 M1 M2 M3 M4 M5 M6
A1 29 P1 -1 22 0 10 1
A1 29 PE 136 95 0.25 11 2
A2 2 P1 -10 10 -0.13 5 1
A3 6
A4 2
A5 3
1条答案
按热度按时间af7jpaap1#
假设列是一个结构数组,您可以使用
lateral view
结合inline
.使用
inline
数组列的多个结构会导致像交叉连接这样的输出,因此它会被注解掉。