explode和lateral view用法


explode就是把一行中為數組類型的數據轉為多行, 比如tableIP這個表中有個Iplist列的值是數組Array: [192.168.0.1,192.1680.2,192.168.0.3] 

使用explode后,會生成多行:

  sql: select explode(iplist) from tableIP;

  執行結果:

       192.168.0.1

       192.1680.2      

       192.168.0.3

  注意: 使用explode時,列需要是Array類型,如果不是Array類型而是string類型,需要先轉換為Array類型。 

lateral view 一般情況下和explode這類UDTF連用, lateral view可以將結果放到一個虛擬表中, 並且把explode的每行結果與輸入行join。

比如tableIP的表如下: 

   

name iplist
 office    [192.168.0.1,192.1680.2,192.168.0.3] 

 

如果我想把每個ip拆分出來,生成這樣的結果: 

name ip
office 192.168.0.1
office 192.1680.2
office 192.168.0.3

可以使用如下sql: 

     select name,ip  from tableIP lateral view explode(iplist)  iplists as ip ;

lateral view直接outer關鍵詞, 使用outer之后,可以達到類似left outer join的效果。 

 

 

   

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM