Snowflake Connector for Google Analytics Raw Data を使ってみた #SnowflakeDB

2024.02.04

2024年1月29日に、Snowflake から Google Analytics 4 のデータを取得できる Snowflake Connector for Google Analytics がプレビューとなりました。
使用可能なコネクタの内、Snowflake Connector for Google Analytics Raw Data を使ってみましたので、その手順を記事としました。

はじめに

Google Analytics 4 (GA4) は、ウェブサイトやアプリの利用状況を分析するために提供されている Google ツールです。

[GA4] 次世代のアナリティクス、Google アナリティクス 4 のご紹介 - アナリティクス ヘルプ

これまでは、旧 GA として Universal Analytics(UA)の名称で提供されていましたが、こちらの次世代バージョンとして、2020年10月にリリースされました。UA は、2023年7月で計測が終了しており、今後も利用状況を分析するには、GA4 の導入が必要です。

GA4 のデータ

GA4 では、計測対象のウェブサイト等にユーザーがアクセスすると、スクロールなどユーザーの行動が「イベント」として保存されます。GA4 では、このイベントデータを集計し、ダッシュボードや表などのレポート形式で参照し、各種分析を行います。

このレポートは、集計済みデータの利用となるため、より柔軟な分析のためには、集計前の生データ(イベントデータ)を使用します。GA4 は BigQuery と連携することが可能で、これにより、イベントデータが BigQuery に出力され、自由な分析を行うことが可能となります。

Snowflake Connector for Google Analytics

今回プレビューとなった GA4 コネクタは2種類あり、それぞれ以下のように対応しています。

  • Snowflake Connector for Google Analytics Raw Data
    • 集計前のイベントデータを Snowflake に同期する
    • 事前に GA4 と BigQuery の連携を行う

  • Snowflake Connector for Google Analytics Aggregate Data
    • 集計済みデータを Snowflake に同期する

本記事では、上記の内 Snowflake Connector for Google Analytics Raw Data を使用し、イベントデータを Snowflake に同期することとしています。

現時点の制約

このコネクタの使用にあたり、2024/2/4 時点で以下の制約があります。代表的な制約は以下です。

  • Snowflake アカウントごとにコネクタのインスタンスを 1 つだけインストール可能です
  • コネクタのインストール・構成には、ACCOUNTADMIN ロールが必要です
  • Google Analytics のデータは、記録後最大 72 時間以内に変更される可能性がありますが、現在、コネクタは変更をリアルタイムに反映しません
  • Google Analytics Raw Data 用の Snowflake コネクタは AWS 環境でのみサポートされています
  • いずれの種類のコネクタも Snowflake トライアルアカウントでは機能しません

詳細は公式ドキュメントをご参照ください。
Known limitations | Snowflake Documentation

前提条件

  • Google Cloud で BigQuery API が有効化されたプロジェクトを作成済みであること

GA4・Google Cloud 側の設定

Snowflake 側の公式ドキュメントに GA4 や Google Cloud 側の手順も含めて記載があるので、その手順に沿って進めます。

GA4 プロパティの BigQuery リンクの構成

はじめに、GA4 のイベントデータを BigQuery に出力する設定を行います。
GA4 の管理パネル内の「サービス間のリンク設定」から [BigQueryのリンク] オプションを選択します。

[BigQuery プロジェクトを選択] より、BigQuery API が有効化された任意のプロジェクトを指定します。

データのロケーション、エクスポート の頻度やユーザー データをエクスポートするか、など構成を行います。ここでは下図の通り、エクスポートタイプは「毎日」としユーザーデータのエクスポートは行わない設定としました。

設定を完了するとリンクが作成済みとなります。
GA4 のデータは、設定後 24時間以内に BigQuery 上に反映されるのでしばらく待機します。

その後、BigQuery 側から GA4 と連携したプロジェクトを確認すると、データセットが作成されていることが確認できます。

ここでデータセット名は「analytics_<プロパティ ID>」として作成されます。
ここでは、上記の設定のため「events_」テーブルのみ作成されていました。
エクスポートタイプを「ストリーミング」にした場合、「events_intraday_」テーブルも作成されるようです。

データテーブルの内容については、以下の記事が参考になりました。
event_ and events_intraday-data-tables in BigQuery for GA4

サービスアカウント認証の構成

Snowflake GA4 コネクタの Google Cloud プロジェクトに対する認証の構成を行います。認証方式として以下のいずれかを選択可能です。

ここでは「サービスアカウント認証」を使用します。

サービスアカウントキーの作成

Google Cloud の対象プロジェクトから「API とサービス > 認証情報」を選択します。

「資格情報を作成 > サービス アカウント」を選択します。

「サービスアカウントの詳細」としてアカウントの名称を指定し「このサービス アカウントにプロジェクトへのアクセスを許可する」で、以下のロールを付与します。

  • BigQuery データ閲覧者
  • BigQuery 読み取りセッション ユーザー
  • BigQuery ジョブ ユーザー

任意でユーザーにサービスアカウントへのアクセスを許可し「完了」をクリックします。 サービス アカウントの作成後、そのサービスアカウントを選択し「キー > キーの追加 > 新しいキーの作成」選択します。

キー タイプの選択ビューで、推奨される JSON を選択し [作成] クリックすると、JSON ファイルがダウンロードされます。

Cloud Resource Manager API の有効化確認

プロジェクトで Cloud Resource Manager API が有効になっていることを確認します。

Snowflake 側の設定:コネクタのインストールと構成

コネクタの構成時に、コネクタのインストールに使用するウェアハウスを指定します。ここでは、コネクタのインストールに使用するウェアハウスを先に作成し、以降の手順を実施しました。

コネクタのインストール

コネクタはマーケットプレイスからダウンロードできます。
ACCOUNTADMIN ロールにスイッチし、Snowflake マーケットプレイスから「Snowflake Connector for Google Analytics Raw Data」を選択します。

アプリケーションのインストールに使用する任意のウェアハウスとアプリケーション名を指定します。

[Get] をクリックするとアプリケーションのインストールが開始されます。
アプリケーションが追加されると、アプリメニューから確認できます。

コネクタの構成

アプリを選択すると、使用にあたって必要な前提条件の確認ウィザードが開きます。各項目にチェックを入れ次に進みます。

次の画面でコネクタに関する以下の設定を行います。

  • ウェアハウス
    • コネクタ用のウェアハウス
    • 既存のウェアハウスを指定することも可能です
    • ドキュメントには、コネクタのインストールに選択したのものとは異なるウェアハウスを指定するよう記載があります
  • ロード先のデータベース、スキーマ
    • Google Analytics からダウンロードされたデータの表示先
    • 既存のデータベース・スキーマを指定することも可能です
  • ロール
    • コネクタ用のロール名
    • 既存のロールを指定することも可能です

次の画面では、認証に関する設定を行います。
ここではサービスアカウントを使用するので、「Service Account」にチェックを入れ「Client email」「Private key」を指定します。
先の手順でダウンロードされた JSON ファイルをアップロードすることで自動で値が入力されます。

[Connect] をクリックすると接続が試みられ、問題なければ下図の表示となります。構成はこれで完了で、そのまま [Define data to sync] をクリックすると同期するデータの選択画面に遷移します。

また、ここでは UI でコネクタの設定を行いましたが、この手順は SQL コマンドからも実行可能です。
SQL ステートメントを使用した Google Analytics Raw データ用の Snowflake コネクタの構成 | Snowflake Documentation

同期するデータの選択

ここで、同期する BigQuery 上のデータセットが表示されるので、同期したいデータセットにチェックを入れ [Start sync] をクリックします。

同期が終わると下図のようになり、最後の同期がいつ行われたかわかるようになっていました。

同期の間隔は最短で 15 分毎を指定できます。

また、この画面の「Settings」タブでは、コネクタに関する各種設定を確認できます。

「Authentification」では、アプリケーションの構成時に作成されるセキュリティ統合などのオブジェクト名を確認できます。

「Email Alerts」では、同期失敗時に通知するメールアドレスの指定が可能です。

データの確認

同期が完了すると宛先データベースにここは下図の通り、オブジェクトが作成されていました。

ANALYTICS_INTRADAY のオブジェクトも作成されていましたが、GA4 側の設定で、エクスポートタイプとしてストリームをオフにしていたため、こちらはレコードがありませんでした。

オブジェクトの内容については、テーブルが生データのような形になっており、ビューから BigQuery 上とほぼ同様の形式でデータを確認できるようになっています。

SELECT * FROM analytics_<プロパティID>__view;

コネクタのアンインストール

コネクタによって取り込まれたデータは、Snowflake Connector for Google Analytics Raw Data アプリケーションによって所有されます。そのため、このテーブルとビューの所有権をアカウント ロールに譲渡する前にコネクタをアンインストールすると、それらも削除されます。

これらのオブジェクトを削除しないようにする場合、宛先スキーマ内のすべてのテーブルとビューの所有権を事前に他のロールに譲渡しておきます。
ここでは、特に譲渡せずそのままアプリケーションをアンインストールしてみます。

ACCOUNTADMIN ロールで Google Analytics Raw Data 用の Snowflake コネクタのメニューから [Uninstall] を選択します。

この画面からでも、宛先データベース内のテーブルとビューの所有権の譲渡先を指定できるようです。
指定のオプションで [Uninstall] をクリックするとコネクタはアンインストールされます。

削除されないオブジェクト

コネクタの構成中に作成されたアプリケーションによって所有されないオブジェクトはそのまま削除されず残るため、必要に応じて手動で削除します。削除されないオブジェクトは以下です。

  • CONNECTORS_SECRET.SNOWFLAKE_CONNECTOR_FOR_GOOGLE_ANALYTICS_RAW_DATA スキーマ内のシークレットネットワーク ルール
  • 外部アクセス統合
    • オブジェクトの名称は、コマンドかアプリケーションをアンインストールしていない場合、アプリケーションの「Settings > Authentification」から確認可能
  • セキュリティ統合
    • オブジェクトの名称は、コマンドかアプリケーションをアンインストールしていない場合、アプリケーションの「Settings > Authentification」から確認可能

さいごに

Snowflake Connector for Google Analytics Raw Data を使って GA4 のイベントデータを Snowflake にロードしてみました。
Google Cloud や GA4 をしっかり触ったことは無かったのですが、Snowflake 側のドキュメントに Google Cloud 側の設定方法についても詳しく記載があったので、特につまづくことなく、データの同期まで対応できました。
イベントデータについては、BigQuery を介する必要がありますが、集計データの同期は Snowflake 単体で完結できます。また、コネクタも無料で提供され、同期頻度の設定やエラー時のメール通知機能もあるので、Snowflake 上で大抵のことはカバーできるのでは、と感じました。
本記事の内容が何かの参考になれば幸いです。