码迷,mamicode.com
首页 > 其他好文 > 详细

explode和lateral view用法

时间:2020-06-29 11:45:53      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:lod   多行   array类   数组类   udt   ring   array   name   tab   

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

 

 

   

      

explode和lateral view用法

标签:lod   多行   array类   数组类   udt   ring   array   name   tab   

原文地址:https://www.cnblogs.com/jinghan/p/13204474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!