GA4 × BigQuery連携 完全ガイド|設定手順・SQLクエリ集・コスト試算【EC/D2C向け】
GA4のデータをBigQueryにエクスポートする設定手順を図解。EC/D2C分析に使えるSQLクエリ集、コスト見積もり、よくあるハマりどころまで網羅。GA4データ分析を次のレベルへ。
なぜGA4データをBigQueryにエクスポートすべきか
Google Analytics 4(GA4)は強力なアクセス解析ツールですが、 蓄積されたデータを本格的に分析するにはBigQueryへのエクスポートが不可欠です。 GA4のBigQueryエクスポートはGoogleが公式に提供する無料機能で、 イベントレベルの生データをそのままBigQueryに蓄積できます。
特にEC/D2C企業にとっては、GA4データをBigQueryに集約することでShopifyの注文データや 広告データとの横断分析が可能になり、マーケティングROIの可視化や顧客行動の深い理解につながります。
GA4単体の分析限界
GA4の管理画面だけでデータ分析を完結させようとすると、以下のような壁にぶつかります。
- データ保持期間の制限 — GA4の探索レポートで使えるデータは最大14ヶ月。長期トレンドの分析ができない
- サンプリング問題 — 大量のデータを集計するとサンプリングが発生し、正確な数値が得られない
- 柔軟なクエリが書けない — GA4の探索レポートではSQLのような自由な分析ができない
- 他データソースとの結合不可 — Shopifyの注文データや広告費データと結合した横断分析ができない
- APIのクォータ制限 — GA4 Data APIにはリクエスト数やディメンション数の制限がある
- ユーザーレベルの分析が困難 — コホート分析やLTV計算にはイベントレベルのローデータが必要
BigQueryにエクスポートすれば、サンプリングなしの完全なデータに対してSQLで自由に分析でき、 保持期間の制限もなくなります。
GA4 → BigQuery連携の設定手順
GA4のBigQueryエクスポートは、管理画面から数ステップで設定できます。 エンジニアでなくても対応可能です。
前提条件
- GA4プロパティの編集者以上の権限が必要
- Google Cloudプロジェクトが作成済みであること
- BigQuery APIが有効化されていること
- GA4とBigQueryが同じGoogleアカウント(または適切なIAM権限)でアクセスできること
設定手順(5ステップ)
- Google Cloudプロジェクトの準備 — GCPコンソールでプロジェクトを作成し、BigQuery APIを有効化。 まだ課金アカウントが紐づいていない場合は設定する(無料枠あり)
- GA4管理画面を開く — GA4の管理 → プロパティ設定 → 「BigQueryのリンク」をクリック
- BigQueryプロジェクトを選択 — 「リンク」ボタンをクリックし、エクスポート先のGCPプロジェクトを選択。 データセットのロケーション(日本なら
asia-northeast1推奨)を指定 - エクスポート頻度を選択 — 「日次」(推奨)または「ストリーミング」を選択。 日次は無料、ストリーミングはBigQuery Storage Write APIの料金が発生
- リンクを確認して送信 — 設定内容を確認し、リンクを作成。 翌日からBigQueryに
events_YYYYMMDDテーブルが自動生成される
日次エクスポート vs ストリーミングエクスポート
| 項目 | 日次エクスポート | ストリーミング |
|---|---|---|
| コスト | 無料(BigQueryストレージ費のみ) | Storage Write API料金が発生 |
| データ反映 | 翌日(通常午前中) | 数分以内 |
| テーブル名 | events_YYYYMMDD | events_intraday_YYYYMMDD |
| おすすめ | ほとんどのEC/D2C企業 | リアルタイム分析が必要な場合 |
EC/D2Cでは日次エクスポートで十分なケースがほとんどです。まずは日次で始めて、リアルタイム性が必要になった段階でストリーミングを追加しましょう。
エクスポートされるデータのスキーマ
GA4からBigQueryにエクスポートされるデータは、イベントベースのフラットテーブルとして格納されます。 1行が1イベント(ページビュー、クリック、購入など)に対応します。
主要カラム
| カラム名 | 型 | 説明 |
|---|---|---|
event_date | STRING | イベント発生日(YYYYMMDD形式) |
event_timestamp | INTEGER | マイクロ秒単位のUNIXタイムスタンプ |
event_name | STRING | イベント名(page_view, purchase, add_to_cart等) |
event_params | RECORD(繰り返し) | イベントパラメータ(key-value形式のネスト構造) |
user_pseudo_id | STRING | クライアントID(Cookie識別子) |
user_id | STRING | 設定済みの場合のみ。ログインユーザーの識別子 |
traffic_source | RECORD | 初回流入のsource / medium / campaign |
device | RECORD | デバイス情報(category, os, browser等) |
geo | RECORD | 地域情報(country, region, city) |
ecommerce | RECORD | EC固有データ(transaction_id, value, items等) |
event_paramsのネスト構造に注意
GA4のBigQueryデータで最も戸惑うのがevent_paramsの構造です。 パラメータはRECORD型の配列として格納されており、 値を取り出すにはUNNESTを使った特殊な記法が必要です。
-- event_paramsから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 '20260401' AND '20260411'
EC/D2C分析に使えるSQLクエリ集
GA4のBigQueryデータを使って、EC/D2C企業が日常的に確認すべきKPIを 算出するSQLクエリを紹介します。
日別セッション数・ユーザー数・PV数
SELECT
event_date,
COUNT(DISTINCT
CONCAT(user_pseudo_id,
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id'))
) AS sessions,
COUNT(DISTINCT user_pseudo_id) AS users,
COUNTIF(event_name = 'page_view') AS pageviews
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20260401' AND '20260411'
GROUP BY event_date
ORDER BY event_date流入チャネル別コンバージョン率
WITH sessions AS (
SELECT
user_pseudo_id,
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS session_id,
traffic_source.source,
traffic_source.medium,
MAX(IF(event_name = 'purchase', 1, 0)) AS has_purchase
FROM `project.dataset.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260301' AND '20260331'
GROUP BY 1, 2, 3, 4
)
SELECT
source,
medium,
COUNT(*) AS sessions,
SUM(has_purchase) AS conversions,
SAFE_DIVIDE(SUM(has_purchase), COUNT(*)) AS cvr
FROM sessions
GROUP BY source, medium
ORDER BY sessions DESC商品別の閲覧→カート→購入ファネル
SELECT
items.item_name,
COUNTIF(event_name = 'view_item') AS views,
COUNTIF(event_name = 'add_to_cart') AS cart_adds,
COUNTIF(event_name = 'purchase') AS purchases,
SAFE_DIVIDE(
COUNTIF(event_name = 'add_to_cart'),
COUNTIF(event_name = 'view_item')
) AS view_to_cart_rate,
SAFE_DIVIDE(
COUNTIF(event_name = 'purchase'),
COUNTIF(event_name = 'add_to_cart')
) AS cart_to_purchase_rate
FROM
`project.dataset.events_*`,
UNNEST(items) AS items
WHERE
_TABLE_SUFFIX BETWEEN '20260301' AND '20260331'
AND event_name IN ('view_item', 'add_to_cart', 'purchase')
GROUP BY items.item_name
ORDER BY views DESC
LIMIT 20BigQueryのコスト見積もり
GA4のBigQueryエクスポート自体は無料ですが、BigQuery側でストレージ費用とクエリ費用が発生します。 ただし、EC/D2C規模のデータ量であれば非常に低コストで運用できます。
コストの目安
| 項目 | 無料枠 | 超過分の単価 | 月間目安(月10万PV) |
|---|---|---|---|
| ストレージ | 10GB/月 無料 | $0.02/GB(長期) | 約$0〜$1 |
| クエリ(オンデマンド) | 1TB/月 無料 | $6.25/TB | 約$0〜$3 |
| ストリーミング | — | $0.025/200MB | 約$1〜$5 |
月間10万PVのECサイトであれば、月額数百円〜数千円程度で運用できます。 日次エクスポート+オンデマンドクエリの組み合わせなら、BigQueryの無料枠内に収まるケースも多いです。
コストを抑えるTips
- パーティションテーブルを活用 —
_TABLE_SUFFIXで日付フィルタを必ず指定し、フルスキャンを避ける - SELECT *を避ける — 必要なカラムだけを指定してクエリのスキャン量を削減
- マテリアライズドビュー — 繰り返し使う集計はマテリアライズドビューにしてクエリコストを削減
- 90日経過データは長期ストレージ — 自動的に長期ストレージ料金(約50%OFF)に移行される
よくあるハマりどころと対処法
1. データが翌日になっても表示されない
BigQueryリンクを設定した当日のデータはエクスポートされません。翌日以降のデータからエクスポートが開始されます。 また、日次エクスポートは通常翌日の午前中(JST)に完了しますが、 GA4側の処理状況によって遅延することがあります。
2. event_paramsの取り扱いが複雑
前述のとおり、event_paramsはネストされたRECORD型の配列です。 各パラメータの値はstring_value、int_value、float_value、double_valueの いずれかに格納されており、パラメータごとに正しい型を参照する必要があります。 ビュー化して抽象化するのがベストプラクティスです。
3. events_intraday_テーブルは上書きされる
ストリーミングエクスポートで作成されるevents_intraday_YYYYMMDDテーブルは、 日次エクスポートが完了すると自動的に削除されます。 intradayテーブルのデータを永続化したい場合は、別テーブルにコピーする仕組みが必要です。
4. ロケーション不一致エラー
GA4のBigQueryリンクで指定したロケーションと、 既存のデータセットのロケーションが異なるとエラーになります。 日本のEC企業であればasia-northeast1(東京)に統一するのが推奨です。
5. user_idが空になる
user_idはGA4のタグ設定で明示的にセットしない限り、NULLのままです。 ECサイトのログインユーザーを追跡するには、GTMまたはgtag.jsでuser_idパラメータを設定する必要があります。 Shopifyの顧客IDと紐づけることで、行動データと購入データの統合分析が可能になります。
6. イベントの重複カウント
GA4のデータには稀に重複イベントが含まれることがあります。 正確な集計のためにはevent_timestampとuser_pseudo_idの組み合わせで 重複排除(DISTINCT)を行う習慣をつけましょう。
GA4 × BigQueryからAI分析自動化へ
GA4のデータがBigQueryに蓄積されれば、それはAI分析自動化の第一歩です。 しかし、エクスポートしただけではデータは「生の状態」であり、 AIが効率的に分析するためにはShopifyデータとの統合と 適切なデータモデリングが必要です。
具体的には、以下のステップでGA4データをAI Readyな状態に整備します。
- データモデリング — event_paramsをフラット化し、EC向けのmartテーブル(日次売上、商品別実績、チャネル別CVR等)を構築
- メタデータ整備 — テーブル定義・カラムの説明・ビジネスルールをドキュメント化し、LLMが正確なSQLを生成できる状態にする
- KPI定義の標準化 — EC/D2Cの主要KPI(売上、CVR、AOV、LTV等)の計算式をSQL化して統一
- AI分析レイヤーの構築 — 整備したデータ基盤の上に、KPI自動監視・変動検知・分析自動化のワークフローを構築
DecisionFlowは、このGA4 × BigQueryのデータ基盤構築から分析自動化AIエージェントの導入までを一気通貫で支援します。 データ基盤のAI Ready化から、毎朝のKPIレポート自動配信、 異常検知時の自動分析まで、「データを見ているだけ」の状態から 「データに基づいて判断する仕組み」へと進化させます。
無料相談はこちらから お気軽にお問い合わせください。 貴社のGA4・BigQuery環境を診断し、最適なデータ基盤構築プランをご提案します。
まとめ
- GA4単体ではデータ保持期間・サンプリング・横断分析に限界がある。BigQueryエクスポートで解決
- GA4管理画面からBigQueryリンクを設定するだけで、イベントレベルの生データを無料で蓄積できる
- EC/D2Cではまず日次エクスポートで十分。月間コストは数百円〜数千円程度
- event_paramsのネスト構造、ロケーション設定、user_idの設定などハマりどころに注意
- GA4データをBigQueryに蓄積したら、Shopifyデータとの統合・データモデリング・AI分析自動化へと発展可能
データ基盤構築から分析自動化まで、一気通貫で
DecisionFlowは、AI Readyデータ基盤の構築からKPI監視・自動分析・意思決定の仕組み化までワンストップで提供します。
