按顺序生成 50 - 60 之间的数字作为多行的记录集,结果如下:
第一步: 用最大值减去最小值,然后使用以下语句生成10个空的集合数组,
select 50 as minNum,split(space(60-50),'') as x;
显示如下:
第二步:将x进行展开,使用posexplode可以获得索引idx字段,通过将索引值+初始值50,就可以实现增长的序列了。
select idx,(minNum+idx) as num from( select 50 as minNum,split(space(60-50),'') as x )t lateral view posexplode(x) pe as idx,blank
显示如下:
如果我们想生成一组日期,用作left join的左边值,就可以使用该方法了,
如下表示生成当前日期开始后的10天记录。
select idx,DATE_ADD(current_date(),idx) as dt from( select 50 as minNum,split(space(60-50),'') as x )t lateral view posexplode(x) pe as idx,blank
显示如下: