如何在HIVE中生成日期系列? (创建表)

时间:2017-07-24 10:33:58

标签: hadoop hive

假设我目前有一个表,每个帐户有1行,表中的数据是:

  1. 帐号
  2. 开始日期
  3. 结束日期
  4. 现在我想创建一个新表,该帐户每天开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中是否有类似的功能可以让你这样做?

    谢谢!

1 个答案:

答案 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