
「ezpipe」でGoogle Analytics 4からSnowflakeに連携する
はじめに
クラスメソッドが提供しているデータパイプラインサービス「ezpipe」は、Google Analytics 4(以降GA4)からデータを連携する機能があります。
これまでSalesforce → Snowflake、kintone → Redshiftの手順を紹介してきました。
今回はGA4からSnowflakeへ連携する手順を紹介いたします。
GA4の連携は、これまでの2つとは少し毛色が違います。ezpipeはGA4の計測データを直接取得するのではなく、GA4のBigQueryエクスポート機能で書き出されたデータを読み取ります。そのため接続元の設定にGoogle Cloud側の準備が必要で、今回はそこがポイントになります。
なお「ezpipe」そのものについてや、対応している製品の一覧については以下の記事を参考にしてください。
設定の全体の流れ
ezpipeの設定は、これまでと同じく次の3つです。
- 接続元設定: GA4(BigQueryエクスポート)の接続情報を登録する
- 接続先設定: Snowflakeの接続情報を登録する
- パイプライン設定: 連携するエンティティと連携サイクルを決める
ただしGA4の場合は、1の前にGoogle Cloud側の準備が必要です。順番に見ていきます。
事前準備 - GA4のデータをBigQueryにエクスポートする
ezpipeはGA4の計測データを直接取得するのではなく、GA4がBigQueryに書き出したデータを読み取ります。そのため、まずGA4側でBigQueryへのエクスポートを有効にしておく必要があります。
GA4の管理画面から「BigQueryのリンク」を設定すると、指定したGoogle Cloudプロジェクトに analytics_<プロパティID> という名前のデータセットが作られ、日次でテーブルが書き出されるようになります。

エクスポートを有効にしてから最初のテーブルが作られるまでは時間がかかるので、ここは余裕を持って進めてください。
あわせて、Google Cloud側に以下を用意します。
| 用意するもの | 用途 |
|---|---|
| BigQueryのプロジェクト番号とデータセットID | GA4のエクスポート先 |
| Cloud Storageのバケット | ezpipeがデータを取り出すときの一時的な置き場 |
Cloud Storageのバケットは、ezpipeがBigQueryからデータを取り出すときの一時的な置き場として使われます。
バケットは連携専用に新しく作っておくのがおすすめです。一時的な置き場なので、他の用途と混ぜる必要はありません。
接続元設定 - Google Analytics 4の接続情報登録
サイドメニューの「接続元」から新規作成を選び、Google Analytics 4 (Export)を選択します。
入力項目は以下です。
| 項目 | 内容 |
|---|---|
| 接続名 | 一覧で判別するための名前 |
| プロジェクト番号 | BigQueryのプロジェクト。123456789012 のような数値で、プロジェクトIDではありません |
| データセットID | GA4が作成したデータセット。analytics_1234567890 の形式 |
| GoogleCloud ストレージ バケット名 | 事前準備で用意したバケット |

サービスアカウントの2つの選び方
GA4接続で特徴的なのが、サービスアカウントの扱いです。「サービスアカウントを自身で用意」のスイッチで2通りから選べます。
スイッチOFF(既定): ezpipeが用意したサービスアカウントを使う
画面にezpipe側のサービスアカウントのメールアドレスが表示されるので、コピーしてGoogle Cloud側で権限を付与します。鍵ファイルを自分で管理しなくて済むのが利点です。

スイッチON: 自分で用意したサービスアカウントを使う
自分で作成したサービスアカウントのJSONキーをアップロードします。鍵の発行や棚卸しを自社のルールで管理したい場合はこちらです。

どちらの場合も、サービスアカウントに次の権限が必要です。
| 対象 | 必要なロール |
|---|---|
| BigQuery | BigQuery データ閲覧者 / BigQuery ジョブユーザー |
| Cloud Storage バケット | Storage オブジェクト閲覧者 / Storage オブジェクト作成者 / Storage オブジェクト ユーザー |
BigQueryは、データを参照するだけでなくクエリの実行も行うため、ジョブユーザーのロールも必要です。Cloud Storageは、ezpipeがバケットにデータを書き出してから読み取るため、閲覧・作成の両方の権限が必要です。
保存するとBigQueryとCloud Storageの両方に対して接続テストが実行されます。権限が足りない場合はエラーメッセージが出ます。
保存すると接続元の一覧に追加されます。

接続先設定 - Snowflakeの認証情報登録
続いて「接続先」からSnowflakeを選択します。
ここはSalesforceの記事で紹介した手順とまったく同じなので、要点だけ挙げておきます。
- Snowflakeアカウント名、データベース名、ユーザー名を入力する
- 認証方式は秘密鍵認証(キーペア認証)のみ。キーペアは事前にSnowflake側へ設定しておく
- ウェアハウスとロールは任意。未指定ならユーザーのデフォルトが使われる

詳しい手順は前回の記事を参照してください。
保存すると接続先の一覧に追加されます。

パイプライン設定 - 連携する項目や時間などを設定
接続元と接続先を組み合わせて、実際の連携設定を作ります。パイプラインの作成はウィザード形式で、4ステップです。
ステップ1では、接続元として先ほど作成したGA4接続を選びます。

ステップ2では、接続先としてSnowflake接続を選びます。

ステップ3: 連携したいエンティティを選択
ここもGA4ならではです。SalesforceはオブジェクトがSalesforceの数だけ、kintoneはアプリの数だけ並びましたが、GA4で選べるエンティティは次の2つだけです。
| エンティティ | 内容 |
|---|---|
| events | イベント単位の計測データ |
| pseudonymous_users | Cookieベースの擬似ユーザー単位のデータ |

BigQueryのデータセットを覗くと events_20260601 のように日付ごとのテーブルが並んでいますが、ezpipeはこれらをまとめて1つの events として扱います。日付が変わるたびに連携対象を増やす必要はありません。
エンティティを展開すると、フィールドの一覧が表示されます。連携する/しないの選択や、特定のフィールドのハッシュ化ができるのはこれまでと同じです。

ステップ4: パイプライン名とデータセット名の設定
最後にパイプライン名とデータセット名を入力します。
ここで指定したデータセット名が、Snowflake側のスキーマ名になります。作成後は変更できないので、命名だけ気をつけてください。

登録すると完了ダイアログが表示され、パイプライン一覧に追加されます。
初回の連携を実行する
初回の連携は手動で実行します。パイプライン一覧の右端のメニュー(⋮)から「今すぐ実行」を選びます。

GA4のイベントデータは件数が多いため、これまでの2つより時間がかかります。完了すると連携結果が「成功」に変わります。

連携サイクルの設定
作成したパイプラインを開き、「連携サイクル」タブで実行間隔を設定します。
- 連携サイクル: 30分 / 1時間 / 2時間 / 3時間 / 4時間 / 6時間 / 8時間 / 12時間 / 24時間
- 基準時刻(JST): 定期実行の起点となる時刻

2回目以降は、前回の連携以降に追加されたデータだけを取得します。GA4のエクスポート自体が日次なので、連携サイクルを極端に短くしてもその分新しいデータが増えるわけではありません。1日1回から始めて、必要に応じて詰めていくのがよさそうです。
以上でGA4からSnowflakeへデータを連携できます。
連携結果を確認する
Snowflakeで連携先のデータベースを開くと、データセット名で指定したスキーマの下にテーブルが作成されています。選んだエンティティは events と pseudonymous_users の2つでしたが、テーブルはそれより多く並んでいます。
GA4のイベントには、1件のイベントに対して複数ぶら下がる項目(eコマースの商品一覧など)が含まれます。こうした繰り返し項目は、親とは別の子テーブルとして作られます。events__items と events__items__item_params がそれにあたります。pseudonymous_users も同様に pseudonymous_users__audiences が作られています。
eventsテーブルをSELECTしてみます。
SELECT * FROM データベース名.データセット名.events LIMIT 10;

event_date、event_timestamp、event_name といったGA4でおなじみのカラムがそのまま並んでいます。event_name には page_view や scroll が入っていて、GA4で見ていたイベントをSQLで扱えるようになりました。
なお event_value_in_usd は、ステップ3でハッシュ化をONにしたため、元の数値ではなくハッシュ値で連携されています。
まとめ
ezpipeでGA4からSnowflakeへデータを連携する手順を紹介しました。
- GA4の連携はBigQueryエクスポートが前提。Google Cloud側の準備が最初のポイントになる
- サービスアカウントはezpipe提供のものに権限を付与する方法と、自分で用意する方法から選べる
- 選べるエンティティはeventsとpseudonymous_usersの2つ。日付別テーブルはezpipeがまとめて扱う
接続元ごとに事前準備の重さは違いますが、接続元を登録してしまえばパイプラインの作り方は共通です。GA4のデータを他のデータと組み合わせて分析したいと考えている方は、ぜひ検討してみてください。








