假设我目前有一个表,每个帐户有1行,表中的数据是:
现在我想创建一个新表,该帐户每天开1行,即每个帐户的开始日期和结束日期(含)之间每行1天。
E.g。
表1
Account Number Start Date End Date
123 1-Jan-17 1-Jul-17
456 1-Feb-17 4-May-17
表2 (所需表格)
Account Number Day
123 1-Jan-17
123 1-Jan-17
...
123 1-Jul-17
456 1-Feb-17
456 2-Feb-17
...
456 4-May-17
我知道在Postgresql中有一个叫做“生成系列”的功能,可以让你轻松完成。我想知道HIVE中是否有类似的功能可以让你这样做?
谢谢!
答案 0 :(得分:19)
select t.AccountNumber
,date_add (t.StartDate,pe.i) as Day
from Table1 t
lateral view
posexplode(split(space(datediff(t.EndDate,t.StartDate)),' ')) pe as i,x