2016-12-23 85 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)为您的月柱,所以你需要将自己的月列转换为日期,以便能够添加/月。减去去吧

相关问题