GA4 BigQueryエクスポート活用ガイド|設定手順からSQLによる分析事例まで
BigQueryエクスポートの概要
GA4のBigQueryエクスポートは、GA4で収集したイベントデータをGoogle BigQueryにそのまま出力する機能です。GA4の管理画面では確認できないローデータ(生データ)をSQLで自由に分析できるようになります。
GA4の標準レポートや探索レポートでは、あらかじめ用意された指標やディメンションの組み合わせに限定されます。BigQueryにデータをエクスポートすれば、イベントパラメータの個別値まで掘り下げた独自の分析が可能です。
無料のGA4プロパティでも日次エクスポートが利用できます。ストリーミングエクスポート(数分以内の準リアルタイム出力)はAnalytics 360(有料版)のみの機能です。日次エクスポートの場合、前日のデータが翌日に出力されます。
エクスポートの設定手順
BigQueryエクスポートの設定は、GA4の管理画面から数ステップで完了します。
事前準備
- Google Cloudプロジェクトを作成し、BigQuery APIを有効化する
- GA4プロパティの**「編集者」以上の権限**を持つアカウントでログインする
- 対象のGoogle CloudプロジェクトでBigQueryの**「ユーザー」ロール**を付与する
設定手順
- GA4の管理画面を開き、「プロダクトリンク」の中から「BigQueryのリンク」を選択する
- 「リンク」をクリックし、エクスポート先のGoogle Cloudプロジェクトを選択する
- データセットのリージョンを選択する(東京リージョンは「asia-northeast1」)
- エクスポートタイプを選択する(「毎日」が無料プロパティの選択肢)
- エクスポートするイベントを選択する(デフォルトは全イベント)
- 設定を確認して保存する
設定完了後、翌日からデータがBigQueryに出力されます。初回のテーブル生成には24時間ほどかかる場合があります。
テーブル構造を理解する
エクスポートされるテーブルの構造はGA4特有のネスト(入れ子)形式で、慣れるまで少し扱いにくいかもしれません。ここで基本的な構造を押さえておきましょう。
テーブル名の規則
日次エクスポートのテーブルは events_YYYYMMDD という命名規則です。たとえば2026年6月19日のデータは events_20260619 というテーブルに格納されます。
主要なカラム
| カラム名 | 型 | 内容 |
|---|---|---|
| event_date | STRING | イベント発生日(YYYYMMDD形式) |
| event_timestamp | INTEGER | イベント発生のUNIXタイムスタンプ(マイクロ秒) |
| event_name | STRING | イベント名(page_view, purchase等) |
| event_params | RECORD(REPEATED) | イベントパラメータのキーと値のペア |
| user_id | STRING | 設定したユーザーID |
| user_pseudo_id | STRING | GA4が自動付与するクライアントID |
| user_properties | RECORD(REPEATED) | ユーザープロパティのキーと値のペア |
| device | RECORD | デバイス情報(カテゴリ、OS、ブラウザ) |
| geo | RECORD | 地理情報(国、地域、都市) |
| traffic_source | RECORD | 初回流入元の情報 |
ネスト構造の扱い方
event_params と user_properties はネスト(REPEATED RECORD)構造です。1つのイベントに複数のパラメータが配列として格納されています。
特定のパラメータ値を取り出すには、UNNEST 関数を使ってネストを展開するか、サブクエリで抽出します。以下のSQLは page_location パラメータの値を取得する基本パターンです。
SELECT
event_date,
event_name,
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location') AS page_location
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
この (SELECT ... FROM UNNEST(...) WHERE key = '...') のパターンは、GA4のBigQueryデータを扱う上で最も頻繁に使う構文です。
基本的なSQL分析例
実務で使える代表的なSQLクエリを紹介します。
ページ別PV数の集計
SELECT
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location') AS page_location,
COUNT(*) AS page_views
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
AND event_name = 'page_view'
GROUP BY
page_location
ORDER BY
page_views DESC
LIMIT 20
セッション別のページ遷移(経路分析)
SELECT
user_pseudo_id,
(SELECT value.int_value
FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS session_id,
event_timestamp,
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_title') AS page_title
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
AND event_name = 'page_view'
ORDER BY
user_pseudo_id, session_id, event_timestamp
コンバージョンファネルの集計
WITH funnel AS (
SELECT
user_pseudo_id,
MAX(IF(event_name = 'page_view', 1, 0)) AS step1_pageview,
MAX(IF(event_name = 'add_to_cart', 1, 0)) AS step2_cart,
MAX(IF(event_name = 'begin_checkout', 1, 0)) AS step3_checkout,
MAX(IF(event_name = 'purchase', 1, 0)) AS step4_purchase
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
GROUP BY
user_pseudo_id
)
SELECT
COUNT(*) AS total_users,
SUM(step1_pageview) AS pageview_users,
SUM(step2_cart) AS cart_users,
SUM(step3_checkout) AS checkout_users,
SUM(step4_purchase) AS purchase_users
FROM funnel
これらのクエリをベースに、自社のイベント名やパラメータに合わせてカスタマイズしてください。
広告運用での活用
BigQueryにエクスポートしたGA4データは、広告運用の分析にも活用できます。
UTMパラメータの分解分析
page_location や page_referrer からUTMパラメータを抽出し、キャンペーン単位・メディア単位で流入後の行動を分析できます。GA4の標準レポートよりも細かい粒度での分析が可能です。
SELECT
REGEXP_EXTRACT(
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'page_location'),
r'utm_campaign=([^&]+)') AS campaign,
COUNT(DISTINCT user_pseudo_id) AS users,
COUNTIF(event_name = 'purchase') AS purchases
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
GROUP BY campaign
HAVING campaign IS NOT NULL
ORDER BY users DESC
ランディングページ別の広告成果
セッションの最初のpage_viewイベントを特定し、ランディングページ別にCV数やエンゲージメント指標を集計できます。広告のリンク先URL別のパフォーマンス評価に役立ちます。
アトリビューション分析
GA4のアトリビューション情報もBigQueryにエクスポートされます。collected_traffic_source カラムを使えば、セッション単位の流入元を取得でき、独自のアトリビューションモデルを構築することも可能です。
費用と最適化
BigQueryのエクスポートデータは、ストレージとクエリの両方に費用が発生します。適切に管理すれば、多くのサイトでは無料枠内に収まります。
費用の目安
| 項目 | 無料枠 | 超過時の料金 |
|---|---|---|
| ストレージ | 10GB/月 | 約$0.02/GB/月 |
| クエリ(オンデマンド) | 1TB/月 | $6.25/TB |
月間100万PV程度のサイトであれば、日次エクスポートのストレージは月数GB程度です。クエリ費用も、日常的な分析であれば無料枠で十分カバーできるケースが多いです。
費用を抑えるテクニック
_TABLE_SUFFIXで日付範囲を絞る:ワイルドカードテーブルevents_*を使う際に、WHERE _TABLE_SUFFIX BETWEEN '...' AND '...'でスキャン対象を限定するSELECT *を避ける:必要なカラムだけを指定して、スキャン量を削減する- パーティション分割テーブルを活用する:エクスポートデータはデフォルトで日付パーティションが適用されている
- クラスタリングキーを設定する:頻繁にフィルタするカラム(event_name等)でクラスタリングしたマートテーブルを作成する
- クエリのドライランで事前にスキャン量を確認してから実行する
BigQueryのコンソールではクエリ実行前にスキャン量の見積もりが表示されます。想定外に大きなスキャンが発生していないか、実行前に確認する習慣をつけるとよいでしょう。
関連記事
参照元
SIGNALZ
運用型広告の実務経験をもとに、体系的なナレッジを発信しています。