見出し画像

3. BigQueryで月曜から日曜までの週毎で集計したい場合の日付指定方法

Googleアナリティクスなどのデータを月曜から日曜までの週毎(ISOWEEK)で集計したい際、どのように日付指定するべきかをこの記事では説明します。

2022/08/31(月)にクエリが実行された場合の例を説明します。

2022年8月のカレンダー

パターン1:DATE_TRUNCを用いて先週の日付を指定する方法

DECLARE firstDate, lastDate DATE;
SET firstDate = DATE_TRUNC(DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 7 DAY), WEEK(MONDAY));
SET lastDate = DATE_ADD(firstDate, INTERVAL 6 DAY);

SELECT CURRENT_DATE('Asia/Tokyo'), firstDate, lastDate

実行結果


DATE_TRUNC(DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 7 DAY), WEEK(MONDAY)) で前週の月曜日を指定しています。
例:DATE_TRUNC(DATE("2022-08-31"), WEEK(MONDAY))

DATE_ADD(firstDate, INTERVAL 6 DAY) で前週の月曜日に6日間追加し、日曜日の日付を算出しています。

パターン2:DATE_SUBを用いる方法

基本的にはパターン1の方法をおすすめしますが、別例としてパターン2をご紹介します。

DECLARE firstDate, lastDate DATE;
SET firstDate = DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 7 DAY);
SET lastDate = DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 1 DAY);

SELECT firstDate, lastDate

実行結果

DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 7 DAY) で7日前を指定する方法もあります。
毎週月曜日に定期実行クエリが動く場合、前週の月曜日(7日前)を求める際などに利用できます。

まとめ

ISOWEEKでウィークリーの集計を行いたい際、前週月曜日から日曜日までの日付を求めたい際の方法をご紹介しました。

基本的にはパターン1の方法の利用をおすすめします。

もし気に入っていただけたら、ぜひサポートお願いします!