计算 Hive 中每个组中有多少条目
Posted
技术标签:
【中文标题】计算 Hive 中每个组中有多少条目【英文标题】:Count how many entries were in each group in Hive 【发布时间】:2017-01-25 05:40:39 【问题描述】:我的数据库如下所示,代表客户在某家商店进行的购买:
Customer ID | Store ID | Date & Time
1 | 1884 | 2016-10-30 13:00:00
5 | 2001 | 2016-10-30 13:00:00
数据集非常大。时间间隔 1 小时。
我需要计算一天中每个小时有多少客户进行了购买。返回的数据应如下所示:
Store ID | Unique Date & Time | Number of purchases
1884 | 2016-10-30 13:00:00 | 8
1884 | 2016-10-30 14:00:00 | 12
我没有想法,如果能得到任何帮助,我将不胜感激。
【问题讨论】:
【参考方案1】:选择 id 并将其按小时和日期分组。
SELECT [ Store ID ], count(*)
FROM table1
GROUP BY DATEPART(day, [ Date & Time]), DATEPART(hour, [ Date & Time]);
【讨论】:
【参考方案2】:我假设这个查询将每小时运行一次,并且生成的数据将附加到现有数据集
以下查询将为您提供客户在 [日期和时间] 在特定商店购买的计数
select [Date and Time],[Store ID],count(customer id)
from [tablename] group by [Date and Time],[Store ID]
order by [Date and Time] DESC
如果您想获得每小时所有购买的完整计数,而不考虑商店 ID,那么您可以试试这个:
select [Date and Time],count(customer id)
from [tablename] group by [Date and Time]
order by [Date and Time] DESC
order by desc 用于在顶部获取最新的时间戳结果
【讨论】:
这可能会遇到分钟和秒的问题,因此将值剥离到日期和小时以避免出现问题。 仍然没有运气,此代码返回所有商店的计数。换句话说,当 store id 发生变化时它不会重置。 @promashk ,您可以在上述第一个查询的末尾添加一个 where 子句,将时间限制为前一小时。现在这个查询应该在一天中的每个小时运行一次,其输出应该插入到一个表中,比如 x。现在,当您从 x 查询前几天的数据时,将其限制为仅前几天的数据。[***.com/questions/34757504/…以上是关于计算 Hive 中每个组中有多少条目的主要内容,如果未能解决你的问题,请参考以下文章