今回はワイルドカードで抽出した値を、_TABLE_SUFFIXという新たに作成した任意の列に格納する方法について解説する。
ワイルドカードで数値を抽出する
まずGA4のデータをBigQueryにエクスポートすると、自動的に日付ごとに分割されたテーブルが生成される。
そこで、日付ごとに分割された大きいテーブルを、小さい分割テーブルに分けることで、クエリのパフォーマンスを向上させたり、コストを抑えることができるのである(これはGoogle先生が自動でやってくれるのがありがたい!)。
(公式ドキュメント参考)
・分割テーブルの概要
https://cloud.google.com/bigquery/docs/partitioned-tables?hl=ja
まず最初に、1日単位ではなく複数の日付にまたがって集計をかけたい場合は、日付表現のところに 「*
(ワイルドカード)」を含めることで集計をかけることが可能だ。
ワイルドカードを用いた記述方法
例えば、2022年07月すべてのテーブルからデータを集計したい場合の記述は以下のようになる。
technogram-354804.analytics_291973511.events_intraday_202207*
続いて、2022年すべてのテーブルからデータを集計したい場合は以下のようになる。
technogram-354804.analytics_291973511.events_intraday_2022*
最後に、存在するすべてのテーブルからデータを集計したい場合は以下のようになる。
technogram-354804.analytics_291973511.events_intraday_*
※存在する全てのテーブルからデータを集計する場合、クエリコストが非常に大きくなる可能性があるので注意が必要だ。
ワイルドカード(*
)と_TABLE _SUFFIXの併用
また取得する期間を制限するため、例えば2022年7月1日から20日までのデータを集計したいという場合は、 _TABLE_SUFFIX
を使うことができる。
上記ワイルドカード表現を使うと_TABLE_SUFFIX
という特別な列が自動生成され、 *
で置き換えた部分の値が格納される。
例えば、 202207*
であれば、 _TABLE_SUFFIX
には 01
から 31
までの値が格納されている。(数値ではなくテキストなので注意!)
また、以下のように WHERE
句で _TABLE_SUFFIX
の条件を指定することで、2022年07月1日から20日までのデータ集計が可能になる。
WHERE
_TABLE_SUFFIX BETWEEN '01' AND '20'
BigQueryを用いた効率的なデータ集計の際には、ワイルドカードからTABLE_SUFFIXを用いる方法を、ぜひ考慮したい。
(公式ドキュメント参考)
ワイルドカード テーブルを使用した複数テーブルに対するクエリ
https://cloud.google.com/bigquery/docs/querying-wildcard-tables?hl=ja