[GA4+BigQuery] イベントごとにばらすクエリ
イベントごとにばらすためのクエリを具体的に書く
連携されたデータを使いやすく整理するにおいて最初に「イベントごとにテーブルを分けることを強くお勧めする」と書いたので、具体的なクエリも紹介する。
前日以前のpage_viewイベント
ひとまずこのクエリをコピーし、プロジェクトとデータセットの名前を変えて実行すれば前日以前のpage_viewイベントが入ったテーブルが作れる。
--前日以前のpage_viewイベント
select
datetime(timestamp_micros(event_timestamp), 'Asia/Tokyo') as event_datetime
,user_pseudo_id
,device.category as device_category
,device.web_info.browser as device_web_info_browser
,traffic_source.source as traffic_source_source
,(select value.int_value from unnest(event_params) params where params.key = ' ga_session_id') as ga_session_id
,(select value.string_value from unnest(event_params) params where params.key = 'page_location') as page_location
from `xxxxxxxxxx.xxxxxxxxxx.events_*`
where event_name='page_view'
and _table_suffix <= format_date('%Y%m%d',date_add(current_date("Asia/Tokyo"),interval -1 day))
クエリの詳細
クエリを書いただけだと応用できないので、詳しく説明も書いてみよう
日付
一旦timestampにしてからdatetimeに変換。その際にタイムゾーンを日本時間にしている
--日本時間のdatetime型に変換
datetime(timestamp_micros(event_timestamp), 'Asia/Tokyo') as event_datetime
timestamp型にしたければ変換不要
--timestamp型に変換
,timestamp_micros(event_timestamp) as event_datetime
日付も作れるし、date_truncやextractを使って年月を作ることも可能
--日本時間のdate型に変換
,date(timestamp_micros(event_timestamp), 'Asia/Tokyo') as event_datetime
構造体型
.(ドット)で繋げばアクセスできる
-- 構造体型だけの場合
,device.category
,device.web_info.browser
,traffic_source.source
event_params,user_propatiesのように配列の中に構造体型(struct)型が入れ子になっているならunnestする。取りたいパラメータに合わせたkeyとデータ型を選ぶ
-- 構造体型(struct)型が入れ子になっているならunnest
,(select value.int_value from unnest(event_params) params where params.key = 'ga_session_id') as ga_session_id
,(select value.string_value from unnest(event_params) params where params.key = 'page_location') as page_location
from
期間の絞り込みは_table_suffixで行うのでワイルドカードで全期間指定。プロジェクトとデータセットの名前は自分の環境に併せて変更すること
--全期間指定
from `xxxxxxxxxx.xxxxxxxxxx.events_*`
イベント名
イベント名を指定
--全期間指定
where event_name='page_view'
期間
whereで期間を指定する。指定しないと全期間読み込まれる。_table_suffixの日付はyyyymmddの文字列型で指定。
-- 実行日の前日以前(日本時間)
and _table_suffix <= format_date('%Y%m%d',date_add(current_date("Asia/Tokyo"),interval -1 day))
特定の日付を取るならそのまま書く
-- 特定の日付の場合はyyyymmdd
and _table_suffix = '20220101'
GA4+BigQueryのまとめ
公開:2022/08/23 18:06:51