将 weekofyear 更改为 sun - sat?

alter weekofyear to sun - sat?

我正在尝试使用 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

从星期日开始在代码下方

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

suyash soni 在别处回答:

简单的解决方案

您可以简单地创建自己的公式,而不是使用预定义的函数 "week of the year" 优势:您将能够在一周内使用任何一组 7 天。

在你的情况下,因为你希望一周从星期日到星期六开始,我们只需要一年中星期日的第一个日期

eg- 在 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;