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