前面几章已经介绍过explode、lateral view等常用的列转行场景函数
今天介绍explode的进阶函数 posexplode函数,实现多列转多行
posexplode函数不同于explode函数,在自身可爆炸的同时,生成索引id。通过索引的关联,实现一对一提取。
表:
a b
A/B 1/3
B/C/D 4/5/2
执行代码:
select
a_inx,
b_inx
from
(
select
a,
b,
a_id,
a_inx,
b_id,
b_inx
from t11
lateral view posexplode(split(a,'/')) t as a_id,a_inx
lateral view posexplode(split(b,'/')) t as b_id,b_inx
) tmp
where a_id=b_id;
输出结果:
a b
A 1
B 3
B 4
C 5
D 2