2017-07-24 90 views
2

假设我现在已经有1排为每个帐户,并在表中的数据表是:如何生成HIVE中的日期系列? (创建表)

  1. 帐号
  2. 开始日期
  3. 结束日期

现在我想创建一个新表,每个帐户每天有一行,即每个帐户的开始和结束日期(含)之间的每一行都有一天。

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

使用'DATE'数据类型来存储日期和ISO格式'的日期的文本表示 –

回答

5
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 
+0

工程就像一个魅力YYYY-MM-DD'! 。谢谢! :) –

+0

不客气:-)答案接受是通过标记留下答案的“V”符号来完成的 –