BigQuery 获取本周和上周的数据

use*_*111 5 google-bigquery

假设我有一个查询:

SELECT ga_channelGrouping, ga_sourceMedium, SUM(ga_sessionDuration)/SUM(ga_sessions) as avg_sessionDuration 

FROM database.table 

group by ga_channelGrouping, ga_sourceMedium
Run Code Online (Sandbox Code Playgroud)

.

如果我有一个看起来像这样的列,我如何选择上周本周的数据。BigQueryDATE2018-06-19 11:00:00 UTC

Bob*_*ank 9

DATE_TRUNC 是一个有用的函数来获取一周的开始,而 DATE_SUB 可以让你到达上周

DATE_TRUNC

DATE_SUB

SELECT if(date(date) >= DATE_TRUNC(current_date(), WEEK(MONDAY)),"This Week","Last Week") weekPeriod, 
 ga_channelGrouping, 
 ga_sourceMedium, 
 SUM(ga_sessionDuration)/SUM(ga_sessions) as avg_sessionDuration 

FROM database.table 
WHERE date(date) >= DATE_SUB(DATE_TRUNC(current_date(), WEEK(MONDAY)), INTERVAL 1 WEEK)
group by weekPeriod, ga_channelGrouping, ga_sourceMedium
Run Code Online (Sandbox Code Playgroud)

如果您的一周从星期日开始,只需将WEEK(MONDAY)更改为WEEK(SUNDAY)