改变一周到太阳 - 坐?

时间:2016-06-28 18:58:25

标签: date hive counting

我试图按周计算我的数据中的访问者使用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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;