Lateral View explode使用过程中炸裂行存在空值导致数据丢失的问题
一般使用
select id,con,con_detail
from
(select 1 as id,'a,b,c' as con
union all select 2 as id,null as con
union all select 3 as id,'' as con
)t
lateral view explode(split(con,',')) aa as con_detail
结果如下,
发现其中id为2的行不见了,原因是其炸裂的列值为null,解决办法有两种,一种是将空值进行非空处理;另一种是使用outer关键字,如下
select id,con,con_detail
from
(select 1 as id,'a,b,c' as con
union all select 2 as id,null as con
union all select 3 as id,'' as con
)t
lateral view outer explode(split(con,',')) aa as con_detail
结果如下,