Google bigquery 使用年中的一周&;bigquery中的子序列

Google bigquery 使用年中的一周&;bigquery中的子序列,google-bigquery,Google Bigquery,我需要每周显示不同的用户。我有一个日期访问列和一个用户id,这是一个有10亿行的大表。 我可以将日期列从CSV更改为年、月、日列。但是我如何从查询中推断出一周呢。 我可以从CSV计算一周,但这是一个很大的过程步骤 我还需要显示每天有多少不同的用户访问,寻找解决方法,因为没有日期类型 有什么想法吗 如果您将日期作为时间戳(即自纪元起的微秒),则可以使用UTC_USEC_TO_DAY/UTC_USEC_TO_WEEK函数。或者,如果您有iso格式的日期字符串(例如“2012/03/13 19:00:

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

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


有什么想法吗

如果您将日期作为时间戳(即自纪元起的微秒),则可以使用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\u USEC\u更改为\u DAY(…)
更改为
UTC\u USEC\u更改为\u week(…,0)
(末尾的0表示周从周日开始)。有关更多信息,请参阅上述功能的文档。

要获取年中的周数:

SELECT STRFTIME_UTC_USEC(TIMESTAMP('2015-5-19'), '%W')
20

非常感谢,唯一的问题是,与向源添加“周”列(通过更改大CSV)和加载到bigquery相比,在大型数据集上进行查询的性能太慢。要获取年中的周数,请选择STRFTIME\u UTC\u USEC(NOW(),“%W”);(见单独答复)