【发布时间】:2017-09-29 18:20:31
【问题描述】:
您好,我手头有一个非常特殊的问题,我无法找到解决方案。我有一个表 UserViews 具有以下列:
Progdate(String)
UserName(String)
表中的虚拟数据:
Progdate UserName
20161119 A
20161119 B
20161119 C
20161119 B
20161120 D
20161120 E
20161120 A
20161121 B
20161121 A
20161121 B
20161121 F
20161121 G
每次用户查看程序时,表中都会有一个条目。例如,11 月 19 日,用户 A 观看了一次节目,因此只有一个条目。用户 B 观看了该节目两次,因此该用户在 11 月 19 日有两个条目,依此类推。
Select Progdate, count(distinct UserName) UniqueUsersByDate
from UserViews
group by Progdate;
以上查询将为我提供观看该节目的所有唯一用户的按日期计数
Progdate UniqueUsersByDate 20161119 3 20161120 3 20161121 4以下查询:
选择 Progdate、UniqueUsersByDate、Sum(UniqueUsersByDate) over(Order By Progdate) RunningTotalNewUsers 从 ( 选择 Progdate,count(distinct UserName) UniqueUsersByDate 从 用户视图 按 Progdate 分组 按 Progdate 排序 ) 紫外线;会给我结果:
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 6 20161121 4 10但我想要的是所有第一次观看该节目的用户的总和。意思是如果用户A在20161119又在20161120观看了节目,那么这个用户的计数不应该在20161120的累计中重复。因此我想要从上表中得到的结果是:
Progdate UniqueUsersByDate RunningTotalNewUsers 20161119 3 3 20161120 3 5 20161121 4 7我只在 HIVE HQL 中寻找解决方案。非常感谢您对此问题的任何意见。
谢谢。
【问题讨论】:
-
以非 ISO 格式将日期存储为字符串以及更多内容的任何原因?
-
数据库已经创建。我对此没有任何发言权:(我必须只使用现有的。顺便说一句,这只是实际表格的缩小版本。实际表格大约有 50 多列。我刚刚发布了相关的一次让它变得简单。
标签: hive cumulative-sum