这是我正在运行的查询:
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周。
答案 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。