hive生成多行数据(根据指定的区间)


按顺序生成 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

显示如下:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM