データ基盤13分で読める

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ステップ)

  1. Google Cloudプロジェクトの準備 — GCPコンソールでプロジェクトを作成し、BigQuery APIを有効化。 まだ課金アカウントが紐づいていない場合は設定する(無料枠あり)
  2. GA4管理画面を開く — GA4の管理 → プロパティ設定 → 「BigQueryのリンク」をクリック
  3. BigQueryプロジェクトを選択 — 「リンク」ボタンをクリックし、エクスポート先のGCPプロジェクトを選択。 データセットのロケーション(日本ならasia-northeast1推奨)を指定
  4. エクスポート頻度を選択 — 「日次」(推奨)または「ストリーミング」を選択。 日次は無料、ストリーミングはBigQuery Storage Write APIの料金が発生
  5. リンクを確認して送信 — 設定内容を確認し、リンクを作成。 翌日からBigQueryにevents_YYYYMMDDテーブルが自動生成される

日次エクスポート vs ストリーミングエクスポート

項目日次エクスポートストリーミング
コスト無料(BigQueryストレージ費のみ)Storage Write API料金が発生
データ反映翌日(通常午前中)数分以内
テーブル名events_YYYYMMDDevents_intraday_YYYYMMDD
おすすめほとんどのEC/D2C企業リアルタイム分析が必要な場合

EC/D2Cでは日次エクスポートで十分なケースがほとんどです。まずは日次で始めて、リアルタイム性が必要になった段階でストリーミングを追加しましょう。

エクスポートされるデータのスキーマ

GA4からBigQueryにエクスポートされるデータは、イベントベースのフラットテーブルとして格納されます。 1行が1イベント(ページビュー、クリック、購入など)に対応します。

主要カラム

カラム名説明
event_dateSTRINGイベント発生日(YYYYMMDD形式)
event_timestampINTEGERマイクロ秒単位のUNIXタイムスタンプ
event_nameSTRINGイベント名(page_view, purchase, add_to_cart等)
event_paramsRECORD(繰り返し)イベントパラメータ(key-value形式のネスト構造)
user_pseudo_idSTRINGクライアントID(Cookie識別子)
user_idSTRING設定済みの場合のみ。ログインユーザーの識別子
traffic_sourceRECORD初回流入のsource / medium / campaign
deviceRECORDデバイス情報(category, os, browser等)
geoRECORD地域情報(country, region, city)
ecommerceRECORDEC固有データ(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 20

BigQueryのコスト見積もり

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_valueint_valuefloat_valuedouble_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_timestampuser_pseudo_idの組み合わせで 重複排除(DISTINCT)を行う習慣をつけましょう。

GA4 × BigQueryからAI分析自動化へ

GA4のデータがBigQueryに蓄積されれば、それはAI分析自動化の第一歩です。 しかし、エクスポートしただけではデータは「生の状態」であり、 AIが効率的に分析するためにはShopifyデータとの統合と 適切なデータモデリングが必要です。

具体的には、以下のステップでGA4データをAI Readyな状態に整備します。

  1. データモデリング — event_paramsをフラット化し、EC向けのmartテーブル(日次売上、商品別実績、チャネル別CVR等)を構築
  2. メタデータ整備 — テーブル定義・カラムの説明・ビジネスルールをドキュメント化し、LLMが正確なSQLを生成できる状態にする
  3. KPI定義の標準化EC/D2Cの主要KPI(売上、CVR、AOV、LTV等)の計算式をSQL化して統一
  4. 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監視・自動分析・意思決定の仕組み化までワンストップで提供します。