lateral view explode的另一种实现方式

lateral view explode实现结果:

如果不用lateral view explode,可以这样实现:

步骤:

1.将一条记录变成n条一样的记录,即

前面再带上序号值,num是key,answers[num]即为所要的value,

2. 上图的实现通过两表连接的方式,

 

 3.B表的实现就是生成递增数字,利用space得到n个空格,在对应空格前加上序号

--方法1
select
  row_number() over() as id
from  
  (select split(space(299), ' ') as x) t
lateral view explode(x) ex;

--方法2
select pos + 1
from 
  (select 1 as id_start, 300 as id_end) t
lateral view posexplode(split(space(id_end - id_start), ' ')) ex as pos, blank;

posexplode(数组) t as pos, blank,只有第一个字段有值,是位置,第二个为空,如果是map就有值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值