使用一周中的一周&在bigquery中加入

时间:2012-10-17 19:19:54

标签: google-bigquery

我需要每周展示不同的用户。我有一个日期访问列和一个用户ID,它是一个有10亿行的大表。 我可以将日期列从CSV更改为年,月,日列。但是如何从查询中推断出周数。 我可以从CSV计算一周,但这是一个很大的过程步骤。

我还需要显示有多少不同的用户日复一日地访问,因为没有日期类型,所以需要寻找解决方法。

任何想法?

2 个答案:

答案 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上的上述功能的文档。