我需要每周展示不同的用户。我有一个日期访问列和一个用户ID,它是一个有10亿行的大表。 我可以将日期列从CSV更改为年,月,日列。但是如何从查询中推断出周数。 我可以从CSV计算一周,但这是一个很大的过程步骤。
我还需要显示有多少不同的用户日复一日地访问,因为没有日期类型,所以需要寻找解决方法。
任何想法?
答案 0 :(得分:7)
获取一周中的一周数:
SELECT STRFTIME_UTC_USEC(TIMESTAMP('2015-5-19'), '%W')
20
答案 1 :(得分:2)
如果您将日期作为时间戳(即自纪元以来的微秒),则可以使用UTC_USEC_TO_DAY / UTC_USEC_TO_WEEK函数。或者,如果您有一个iso格式的日期字符串(例如“2012/03/13 19:00:06 -0700”),您可以调用PARSE_UTC_USEC将字符串转换为时间戳,然后使用它来获取周或日。
要查看示例,请尝试:
SELECT LEFT((format_utc_usec(day)),10) as day, cnt
FROM (
SELECT day, count(*) as cnt
FROM (
SELECT UTC_USEC_TO_DAY(PARSE_UTC_USEC(created_at)) as day
FROM [publicdata:samples.github_timeline])
GROUP BY day
ORDER BY cnt DESC)
要显示周,只需将UTC_USEC_TO_DAY(...)
更改为UTC_USEC_TO_WEEK(..., 0)
(结尾处的0表示周日从周日开始)。有关详细信息,请参阅https://developers.google.com/bigquery/docs/query-reference上的上述功能的文档。