改变一周到太阳 - 坐?

问题描述 投票:1回答:2

我试图按周使用Hive对我的数据中的访问者进行计数,但我的周是从星期日开始,而不是星期一。像这样的东西可行,但它给了Mon-Sun

SELECT 
Month(timestamp), Weekofyear(timestamp), COUNT (DISTINCT userid) 
FROM Data 
Group By Month, Week

有没有办法可能改变这个工作的时间戳?这似乎与我用硬编码日期做的数字一致。

SELECT 
Month(timestamp), Weekofyear(SUB_DAY(timestamp,1)), COUNT (DISTINCT userid) 
FROM Data 
Group By Month, Week
date hive counting
2个回答
1
投票

从周日开始下面的代码

SELECT 
Month(timestamp), Week(timestamp), COUNT (DISTINCT userid) 
FROM Data 
Group By Month, Week

从星期一开始吧

SELECT 
Month(timestamp), Week(timestamp,1), COUNT (DISTINCT userid) 
FROM Data 
Group By Month, Week

0
投票

suyash soni在其他地方回答:

简单解决方案

您可以简单地创建自己的公式,而不是使用“一年中的一周”的预定义功能。优势:您可以在一周内完成7天的任何一组。

在您的情况下,因为您希望本周应该从周日至周六开始,我们将需要一年中的第一个星期日

例如 - 2016年,第一个星期日是'2016-01-03',即2016年1月3日 - 考虑时间戳列的格式为'yyyy-mm-dd'的假设

SELECT
count(distinct UserId), lower(datediff(timestamp,'2016-01-03') / 7) + 1 as week_of_the_year 
FROM table.data 
where timestamp>='2016-01-03'
group by lower(datediff(timestamp,'2016-01-03') / 7) + 1; 
© www.soinside.com 2019 - 2024. All rights reserved.