2016-12-23 84 views
0

我有這樣的表格,代表一個會員在一個月內購買過產品。該月從201501到201612. 我想得到一個新表,其中包含兩列:一個是從201501到201612的月份,另一個是count(distinct member_srl)作爲member_rolling,記錄在那個月。 例如,新表的一個記錄是「201605 123456」,在月> ='201505'和月<'201605'的條件下,編號123456是計數(distinct member_srl)。 那麼如何以簡單的方式和快速的方式來實現這一點?如何在Hive的每個時間窗口統計不同的成員?

member_srl month 
21197731 201501 
14353419 201509 
42129336 201605 
10599714 201611 
16162595 201501 
50487249 201601 
14899586 201604 
29611434 201607 
15374407 201608 
14479686 201501 
1621671  201502 
20814896 201512 
8185190  201501 
57833156 201601 
5215620  201503 
60407250 201602 
3510594  201501 
25221577 201611 
2120126  201512 

回答

0

你應該自己加入表格。
加入它的月份列與你想要的12個月範圍。
然後在相關列上進行聚合。
喜歡的東西:
SELECT t1.id AS id, COUNT(DISTINCT t2.member_srl) AS member_srl_distinct_count FROM test t1 JOIN test t2 ON t1.id= t2.id OR t1.id=(t2.id-1) OR t1.id=(t2.id-2) ... GROUP BY t1.id;

在這個例子中,我使用一個INT列(ID)爲您的月柱,所以你需要將自己的月列轉換爲日期,以便能夠添加/月。減去去吧

相關問題