在BigQuery中将日期转换为ISO周年

时间:2015-01-28 21:09:43

标签: google-bigquery

这是我正在运行的查询:

SELECT date, COUNT(fullvisitorid), device.deviceCategory
FROM TABLE_DATE_RANGE([xxx.ga_sessions_],TIMESTAMP('2014-05-01'),TIMESTAMP('2014-12-31')) GROUP BY date, device.deviceCategory

这将返回按设备划分的每一天的日期和总用户数。有没有办法将这个日期(个人日)转换为ISO周一年?例如:如果这一天是2014-01-01那么它将会被分配到" 1"第1周。

2 个答案:

答案 0 :(得分:0)

BigQuery有WEEK功能 - 所以

SELECT WEEK(CAST('2014-01-01' AS TIMESTAMP)),
       WEEK(CAST('2014-12-31' AS TIMESTAMP))

分别返回1和53.

答案 1 :(得分:0)

有两种方法可以做到这一点。一种是使用EXTRACT:

SELECT EXTRACT(ISOWEEK FROM TIMESTAMP '2018-06-25')

另一个正在使用FORMAT_TIMESTAMP:

FORMAT_DATE('%V', DATE '2018-06-25')

EXTRACT的优点在于,它对日期,日期时间和时间戳记字段的作用相同。缺点是它有very limited output options,但是其中之一就是等周,因此它可以满足您的目的。

FORMAT_DATE带有一系列函数(FORMAT_TIMESTAMP,FORMAT_DATETIME,FORMAT_TIME),但是您必须根据数据类型使用正确的函数。从正面来看,您可以使用very specific transformations的组合来进行supported format elements