EXPLODE和LATERAL VIEW

2021-11-29  本文已影响0人  抬头挺胸才算活着
刘德华 演员 
刘德华 导演 
刘德华 制片人 
李小龙 演员 
李小龙 导演 
李小龙 制片人 
李小龙 幕后 
李小龙 武术指导 

或许我们想直接这样写SQL,结果出错,因为explode是UDTF,输入一行会输出多行,这个时候我们就需要用到LATERAL VIEW。

select username,explode(split(userrole,',')) from  ods.ods_actor_data; 

我们可以用下面的SQL语句即可得到我们想要的结果。
LATERAL VIEW的用法为:original_table LATERAL VIEW (outer) udtf(expression) tableAlias AS columnAlias,其中outer用于当udtf(expression)输出结果为null的时候保留左侧结果

select 
   username,role 
from 
    ods.ods_actor_data 
LATERAL VIEW 
    explode(split(userrole,',')) tmpTable as role 
; 
上一篇 下一篇

猜你喜欢

热点阅读