按順序生成 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
顯示如下: