見出し画像

SnowflakeのGA4コネクタでできること


1.概要

電通デジタルCRMインテグレーション事業部の小林です。

この記事では、Snowflake の Google Analytics用コネクタについてご紹介します。
こちらは2024年1月28日にプレビューとなった機能で、Rawデータ用と集計データ用のコネクタがそれぞれあるようです。

下記、公式ドキュメントからの抜粋ですが、これらのコネクタによって、GA4のデータを自動でSnowflakeに取り込むことができるようです。

Google Analytics Raw Data 用の Snowflake コネクタを使用すると、イベントレベルの Google Analytics 4 (GA4) データを Snowflake アカウントに自動的に取り込むことができます。

https://other-docs.snowflake.com/en/connectors/google/gard/gard-connector-about

実際のところ、どれだけ楽に取り込みができるのでしょうか?

この記事では、コネクタによって、

  • 実際のところどれだけ簡単に設定できるの?

  • ”自動的に取り込む”ってどういうこと?(同期の頻度は?)

  • 取り込んだデータは本当にすぐ使える状態なの?

について検証していきます。

2.実際に設定してみる

このパートでは、1つ目の疑問である”実際のところどれだけ簡単に設定できるの?”を検証してみたいと思います。

今回は、前述の2つのコネクタのうち、「Google Analytics Rawデータ用のSnowflakeコネクタ」を検証します。

まず前提として、GA4から直接Snowflakeにデータ連携ができる訳ではなく、GA4→BigQueryへのデータ連携が必要なようです。

Snowflake Connector for Google Analytics Raw Data (詳細なイベントレベルの詳細) を抽出するには、GA4 プロパティと Google Cloud Platform (GCP) プロジェクトの間に手動リンクを設定する必要があります。これにより、生データを BigQuery にエクスポートできるようになります。次に、Google Analytics Raw Data 用の Snowflake コネクタがBigQuery Storage APIに接続し、データを Snowflake アカウントにダウンロードします。

https://other-docs.snowflake.com/en/connectors/google/gard/gard-connector-about


Snowflake公式ドキュメントのイメージ図ですが、BigQueryからSnowflakeへの連携であることがわかります。


ここからは実際の設定手順をご紹介していきます。

前述の通り、まずはGA4→BigQueryへは連携が必要となりますが、こちらは既に"設定済み"の前提で記載します。

なお、GA4→BigQueryへの連携手順は下記のGoogleアナリティクス公式ヘルプページで紹介されています。https://support.google.com/analytics/answer/9358801?hl=ja


設定手順ですが、大きくステップに分けると、下記になるようです。


  1. GCP側の設定

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

    2.   Cloud Resource Manager API の有効化確認

  2. Snowflake側の設定

    1.  コネクタのインストール

    2.  コネクタの設定

    3.  同期するデータの選択


実際に私の方で試したところ、30分もかからずに設定できました!
下記では、詳細の手順をご紹介します。

1.GCP側の設定

まずはGCP側の設定となります。

1-1.サービスアカウント認証の構成
認証方法もいくつかありますが、今回は「サービスアカウント認証」の方法で実施します。

まずは下記からGoogle cloudにログインし、「APIとサービス」「認証情報」の順に選択します。
https://console.cloud.google.com/welcome

左上の「+認証情報を作成」から、「サービスアカウント」を選択します。

続いて、「サービスアカウントの詳細」から、必須である「サービスアカウントID」を設定(任意の文字列)し、「作成して続行」を選択します。

「ロール」欄にて下記3つを選択して、「完了」を選択

  • BigQuery データ閲覧者

  • BigQuery 読み取りセッション ユーザー

  • BigQuery ジョブ ユーザー

続いて、先ほどの「サービスアカウント」を選択し、「キー」から「鍵を作成」の順に選択し、秘密鍵を作成します。
キータイプは「JSON」を選択して「作成」します。

後ほどこちらのJSONファイルをSnowflakeに取り込むことで、BIgQueryとの認証が完了します。BigQuery側の設定は基本的にこれだけのようです。

1-2. Cloud Resource Manager API の有効化確認
こちらは、まだ有効化していない場合のみ対応が必要です。
GCPの検索窓で「Cloud Resource Manager API」と検索し、下記の通り「管理」とあれば有効化済みですが、そうでなければ「有効化」してください。


2.Snowflake側の設定

続いてSnowflake側の設定となります。
下記の手順を踏んでいただくことで、BigQueryのデータをSnowflakeのテーブルおよびビューとして格納することができます。

2-1.コネクタのインストール
まずは下記からSnowflakeにログインします。https://www.snowflake.com/login/?lang=ja

そしてコネクタのインストールですが、こちらは”ORGADMIN”ロールへの切り替えが必要となります。なお、インストールおよび利用は無料です。

Snowflakeの左側メニューの「データ製品」から「Marketpace」を選択し、検索窓から「 Snowflake Connector for Google Analytics」と検索します。

「取得」をクリックします。
下記のようなポップアップが出てくるので、続けて「取得」します。

インストールには数分要しますが、完了すると下記のようなポップアップが表示されます。

以上でコネクタのインストールは完了です。

2-2.コネクタの設定
続けてコネクタの設定です。
インストール後に再度「Snowflake Connector for Google Analytics」を選択すると、使用にあたり必要な前提条件の確認のポップアップが開きます。各項目(全4つ)にチェックを入れ次に進みます。

続けて、GAデータのロードにあたって利用するウェアハウスとデータベース、スキーマ、ロールを設定できます。
新しく作成する場合は、「New」(デフォルト)のまま「Configure」を選択します。

続いて、BigQueryとの認証に関する設定を行います。
先ほどGCPの画面から作成したJSONファイルをアップロードし、「Connect」を選択します。

これで「Successfully Configured」と表示されれば完了です。

2-3.同期するデータの選択
最後に、同期したいBigQueryのデータセットを選択します。
「Data sync」のメニューから、同期したいデータセット名を選択します。
※黒く塗りつぶしている箇所にデータセット名が表示されます。

同期が完了すると、下記のように右上に「Last sync:〇 ago」と表示されます。

また、同期の間隔も設定可能なようです。
冒頭の話に戻ると、コネクタによって“自動で同期できる”という話でしたが、その同期間隔も自動で設定できるようで、最短で15分、最長で1日間隔のようです。

また、同期の度に当然クレジットも消費しますので、こちらの設定は予算との兼ね合いで判断する必要もあります。

これでSnowflakeメニューの「データ」から「データベース」を確認してみると、先ほど設定したデータベース等のオブジェクトが追加されていることを確認できるかと思います。

設定はこれで以上となります。
筆者の方で設定した所感としては、30分もあれば設定が完了できる上に、GUIでの設定ができて簡単と思います。
皆さんもぜひ利用してみてはいかがでしょうか。

3.連携されたデータを確認してみる

ここまで、コネクタの設定手順についてみてきました。
データが簡単にSnowflakeに連携できることは確認できましたが、このパートでは、「取り込んだデータは本当にすぐ使える状態なの?」について検証してみようと思います。

前提として、BigQueryに格納されているデータはネスト化されています。
Snowflakeに取り込んだ際、それらがフラット化されてすぐにSQLで加工できる状態か?がポイントかと思います。

1.各データ項目の内容について

まず、今回利用した連携元となるBigQueryに格納されているデータ項目は下記で12個です。

  • event_params

  • privacy_info

  • user_properties

  • user_ltv

  • device

  • geo

  • app_info

  • traffic_source

  • event_dimensions

  • eccommerce

  • Items

  • collected_traffic_source

実際のBigQueryの画面は下記の通りで、フィールド名の左に「▶」があるものがネスト化されているものです。

では、これらをコネクタで連携した後のSnowflake側のデータはどうなっているでしょうか。
列数が多いため、全てを画像として掲載はできませんが、
結論、下記3つ以外は全てデフォルトでUNNEST化されていそうです。

  • event_params

  • user_properties

  • items

一方で上記3つについてはネスト化されたままで、型は”Variant”で入っていました。下記、ご参考までにevent_paramsのデータプレビューです。


2.SnowflakeでUNNEST化する方法

ここからは補足として、前述のVariant型のデータをSnowflakeでフラット化する手順をご紹介します。
まず、上記の画像にある各行は、以下のような構造になっています。
※値はサンプルとして入れています。

[ 
 { 
 "key": "page_location", 
 "value": { 
 "double_value": 1, 
 "float_value": 2, 
 "int_value": 3, 
 "string_value": "a" 
 } 
 }, 
 { 
 "key": "ga_session_number", 
 "value": { 
 "double_value": null, 
 "float_value": null, 
 "int_value": 5, 
 "string_value": null 
 } 
 } 
]

これらのフラット化は、SnowflakeのLATERAL FLATTEN関数により実施でき、そこまで複雑なSQLにもなりません。

実際に、下記のクエリで実行できました。
※テーブル/VIEW名など適宜修正ください。

SELECT
value:key::string AS key,
value:value:double_value::float AS double_value,
value:value:float_value::float AS float_value,
value:value:int_value::float AS int_value,
value:value:string_value::string AS string_value
FROM テーブル/VIEW名,
LATERAL FLATTEN(input => event_params) event_params
;

結果は下記の通りで、問題なくフラット化できていそうです。

この状態になればSQLで加工も可能かと思います。

以上、このパートでは、
"取り込んだデータは本当にすぐ使える状態なの?"
を見てきました。

結論、一部のデータはネスト化された状態で連携されていましたが、Snowflakeであればこれらのフラット化も簡単にできそうです。

4.まとめ

ここまで、

  • 実際のところどれだけ簡単に設定できるの?

  • ”自動的に取り込む”ってどういうこと?(同期の頻度は?)

  • 取り込んだデータは本当にすぐ使える状態なの?

についてみてきました。

SnowflakeのGA4コネクタを利用することで、簡単にGoogle Analytics4のデータを取り込めることがわかりました。

この機能を機に、Google Analyticsのデータを”分析する箱としての”Snowflakeの利用が広まればと思います。

電通デジタルにはGA4の計測設計からDWHの構築、BI構築まで幅広いスキルを持ったチームがあります。
お困りのことがあれば、お問い合わせください。