需求:生成2022-01到当前月份的所有日期生成,后续填充数据
select add_months(start_month, pos) as period_date
from (select "2022-01-01" as start_month, current_date() as end_month) tmp
lateral view posexplode(split(space(cast(months_between(end_month, start_month) as int)), "")) aa;
space(n:int): 生成n个空格,使用split分割成数组,然后使用posexplode展开为每行为pos,val的表
另附stack(col_num,...)函数用于行转列,例如生成2行数据
stack(3,id,name,score,id,sex,score)
6(字段参数)/3(列)=2(行)