2

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

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

有任何想法吗?

4

2 回答 2

7

要获得一年中的星期数:

SELECT STRFTIME_UTC_USEC(TIMESTAMP('2015-5-19'), '%W')
20
于 2014-05-19T23:44:57.563 回答
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上的上述函数的文档 。

于 2012-10-17T21:53:54.843 回答