2016-11-08 63 views
0

我想在Hive中創建一個具有三列的表(表A)。此表的時間從上午5點開始,到次日凌晨2點結束。每一行都是距前一行5分鐘的增量。在SQL中創建時間範圍

前兩列是這個(我不知道如何產生這個)。

start_time | end_time 
    5:00:00 | 5:05:00 
    5:05:01 | 5:10:00 
... 
23:55:01 | 00:00:00 
... 
    1:55:01 | 02:00:00 

有沒有人知道如何做到上述?

爲了進一步瞭解一些背景:

一旦我有表A創建的,我想用用另一個表(表二),我有劃時代次,每次代表一個客戶的訪問記錄,提取必要的小時/分鐘/秒信息,然後提供表A第三列中每個時間間隔的訪問者總數,例如「customer_count」。

我想我知道該怎麼爲表A「customer_count」一欄,但是,我需要與正在前兩列在表A

+1

會像這樣幫助接收時間? http://www.codeproject.com/Questions/1081297/Split-time-with-mins-interval-in-sql-server – Aron

+0

@Aron:感謝您的提示!我相信Hive不支持遞歸CTE。我嘗試了一種方法,利用它,我認爲我發佈之前在SO中找到了它。 – smali

回答

0

你可以做它周圍的其他方法幫助計算:

  1. 作物從表B中你有興趣
  2. 組日期5個分鐘爲增量(計算由(time-start_time)/60/5假設時期是以秒爲單位)
  3. 然後轉動增量回日期和計算的S的Econd end_time

事情是這樣的:

select from_unixtime(<start time> + period*60*5), 
     from_unixtime(<start time> + (period+1)*60*5), 
     count from 
    (select (time-<start time>)/(60*5) as period,count(*) as count from tableB 
    where time >= <start time> and time <= <end time> 
    group by (time-<start time>)/(60*5)) inner 

請注意,你不會用零計數(期間沒有訪問)

+0

嗨亞歷克斯,只是想非常感謝你的答案! – smali

+0

嗨@smali,如果您對答案滿意,您可以接受 - 答案附近的綠色複選標記。 –