我试图按周使用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在其他地方回答:
简单解决方案
您可以简单地创建自己的公式,而不是使用“一年中的一周”的预定义功能。优势:您可以在一周内完成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;