2017-07-24 91 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」符號來完成的 –