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的效果。
