GA4もSnowflakeで分析する時代がついに来たぞ!
2024年5月現在、GA4とSnowflakeの公式コネクタは正式に一般公開されています
2024年1月29日、GA4とSnowflakeの公式コネクタがリリース(プレビュー)されました。
ついに、GA4もSnowflakeで分析する時代がやってきました。
GA4×Snowflakeの組み合わせがやっとプロダクション運用可能なレベルに到達したのです。
これは今回のコネクタリリースでGA4のプロパティ取り込みパイプラインの運用コストが圧倒的に下がったことに起因します。
公式コネクタのリリース以前からGA4をSnowflakeに取り込むことは可能でしたが、その運用を継続することは様々な観点から困難でした。
この記事では、従来の取り込みソリューションと、最新の公式コネクタを比較して4つの観点から素晴らしい部分を解説します。
- GA4のデータの取り込みが容易になった
- 取り込み後のデータの冗長な変換が不要になった
- 取り込みの金銭的コストが圧倒的に低くなった
- GA4のデータ取り込みに公式サポートがつくようになった
また、プレビュー時点でのコネクタの仕様と、見落としやすい制限に関しても記載しました。
1.データの取り込みが容易に
GA4の情報をSnowflakeに保存するまでの手順が簡単になりました。
Snowflake内部でGUIのウィザードに沿って情報を入力するだけで連携が完了します。
これまで
Pythonなどで取り込みスクリプトを書くか、FiveTranやAirbyteなどのSaasを使う必要がありました。前者はインフラストラクチャや失敗の管理が面倒で、後者も認証情報の管理が難しく、支払先も複数になるなどのデメリットがありました。
これから
GA4コネクタによって、ユーザーは取り込みスクリプトとそのインフラストラクチャを管理する必要はなくなりました。認証はSnowflake内部で完結し、外部Saasに料金を支払う必要もなくなりました。GA4コネクタはSnowflake内部で動き、取り込みの際に使用した仮想ウェアハウスの分だけ料金が発生します。金額については後述します。
2.冗長な変換が不要に
GA4の情報をSnowflakeで分析可能な状態にすることが簡単になりました。
手動での半構造化データのパースが不要に。
これまで
取り込んだ巨大な半構造化データを手動でパースする必要がありました。dbtなどを使っても、このパースは非常に面倒な作業でした。
これから
最初からパース済みの表データを取得できます。GA4コネクタが作成するView定義内でパースが行われています。もちろんVARIANTをパースしていないRAWデータもテーブルとして入手可能です。
↑コネクタでフルマネージドに取り込んだRAWデータテーブル
↑コネクタによって作成されたViewでパースされたRAWデータ
Viewのカラム定義を見ると、イベント名、デバイス名、ユーザープロパティ、市区町村レベルの位置情報など必要な情報が全て抽出されています。
以下に、ビューの全てのカラム名を添付しました。どの程度プロパティが網羅されているかを確認してみてください。十分に分析に必要なカラムが網羅されていることがわかるはずです。
Viewのカラム全定義
name | type |
---|---|
EVENT_DATE | DATE |
EVENT_TIMESTAMP | TIMESTAMP_NTZ(6) |
EVENT_NAME | VARCHAR(16777216) |
EVENT_PARAMS | VARIANT |
EVENT_PREVIOUS_TIMESTAMP | TIMESTAMP_NTZ(6) |
EVENT_VALUE_IN_USD | FLOAT |
EVENT_BUNDLE_SEQUENCE_ID | NUMBER(38,0) |
EVENT_SERVER_TIMESTAMP_OFFSET | NUMBER(38,0) |
USER_ID | VARCHAR(16777216) |
USER_PSEUDO_ID | VARCHAR(16777216) |
PRIVACY_INFO_ANALYTICS_STORAGE | VARCHAR(16777216) |
PRIVACY_INFO_ADS_STORAGE | VARCHAR(16777216) |
PRIVACY_INFO_USES_TRANSIENT_TOKEN | VARCHAR(16777216) |
USER_PROPERTIES | VARIANT |
USER_FIRST_TOUCH_TIMESTAMP | TIMESTAMP_NTZ(6) |
USER_LTV_REVENUE | FLOAT |
USER_LTV_CURRENCY | VARCHAR(16777216) |
DEVICE_CATEGORY | VARCHAR(16777216) |
DEVICE_MOBILE_BRAND_NAME | VARCHAR(16777216) |
DEVICE_MOBILE_MODEL_NAME | VARCHAR(16777216) |
DEVICE_MOBILE_MARKETING_NAME | VARCHAR(16777216) |
DEVICE_MOBILE_OS_HARDWARE_MODEL | VARCHAR(16777216) |
DEVICE_OPERATING_SYSTEM | VARCHAR(16777216) |
DEVICE_OPERATING_SYSTEM_VERSION | VARCHAR(16777216) |
DEVICE_VENDOR_ID | VARCHAR(16777216) |
DEVICE_ADVERTISING_ID | VARCHAR(16777216) |
DEVICE_LANGUAGE | VARCHAR(16777216) |
DEVICE_IS_LIMITED_AD_TRACKING | BOOLEAN |
DEVICE_TIME_ZONE_OFFSET_SECONDS | NUMBER(38,0) |
DEVICE_BROWSER | VARCHAR(16777216) |
DEVICE_BROWSER_VERSION | VARCHAR(16777216) |
DEVICE_WEB_INFO_BROWSER | VARCHAR(16777216) |
DEVICE_WEB_INFO_BROWSER_VERSION | VARCHAR(16777216) |
DEVICE_WEB_INFO_HOSTNAME | VARCHAR(16777216) |
GEO_CONTINENT | VARCHAR(16777216) |
GEO_COUNTRY | VARCHAR(16777216) |
GEO_REGION | VARCHAR(16777216) |
GEO_CITY | VARCHAR(16777216) |
GEO_SUB_CONTINENT | VARCHAR(16777216) |
GEO_METRO | VARCHAR(16777216) |
APP_INFO_ID | VARCHAR(16777216) |
APP_INFO_VERSION | VARCHAR(16777216) |
APP_INFO_INSTALL_STORE | VARCHAR(16777216) |
APP_INFO_FIREBASE_APP_ID | VARCHAR(16777216) |
APP_INFO_INSTALL_SOURCE | VARCHAR(16777216) |
TRAFFIC_SOURCE_NAME | VARCHAR(16777216) |
TRAFFIC_SOURCE_MEDIUM | VARCHAR(16777216) |
TRAFFIC_SOURCE_SOURCE | VARCHAR(16777216) |
STREAM_ID | VARCHAR(16777216) |
PLATFORM | VARCHAR(16777216) |
EVENT_DIMENSIONS_HOSTNAME | VARCHAR(16777216) |
ECOMMERCE_TOTAL_ITEM_QUANTITY | NUMBER(38,0) |
ECOMMERCE_PURCHASE_REVENUE_IN_USD | FLOAT |
ECOMMERCE_PURCHASE_REVENUE | FLOAT |
ECOMMERCE_REFUND_VALUE_IN_USD | FLOAT |
ECOMMERCE_REFUND_VALUE | FLOAT |
ECOMMERCE_SHIPPING_VALUE_IN_USD | FLOAT |
ECOMMERCE_SHIPPING_VALUE | FLOAT |
ECOMMERCE_TAX_VALUE_IN_USD | FLOAT |
ECOMMERCE_TAX_VALUE | FLOAT |
ECOMMERCE_UNIQUE_ITEMS | NUMBER(38,0) |
ECOMMERCE_TRANSACTION_ID | VARCHAR(16777216) |
ITEMS | VARIANT |
COLLECTED_TRAFIC_SOURCE_MANUAL_CAMPAIGN_ID | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_MANUAL_CAMPAIGN_NAME | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_MANUAL_SOURCE | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_MANUAL_MEDIUM | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_MANUAL_TERM | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_MANUAL_CONTENT | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_GCLID | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_DCLID | VARCHAR(16777216) |
COLLECTED_TRAFIC_SOURCE_SRSLTID | VARCHAR(16777216) |
今後このビューなどを詳しく掘り下げた記事も出す予定なので、良ければXのフォローもお願いします😊
3.金銭的コストが圧倒的に低くなった
GA4の情報をSnowflakeで非常に安く取り込めるようになりました。
比較したFivetranがちょっとお高いのかもしれないですが…最大99.94%オフになります。
これまで
外部Saasを用いてデータを取り込むと高額な料金が発生していました。
例えば、Fivetranで月間約2300万行を取り込むと4157ドルかかるとのこと。初回同期(initial sync)は無料ですが、サービスを運用していくならばいつかはお金を支払うことになるでしょう。
※まだFivetranをちゃんと使ったことがないので、もしPricingの見方が間違いでしたらご指摘ください🙇♂
これから
約2400万イベントごとに2.85ドルぐらいです。安すぎないか。
GA4コネクタの自体の使用料金は無料で、支払いはSnowflakeタスクのコンピューティングコストだけです。
GA4コネクタはユーザー定義の仮想ウェアハウスを使って、定期的に同期を行います。
あくまで目安ですが、XSサイズのウェアハウスが60分ごとに約2400万イベントのデータが取り込めました。
1時間×1クレジット/時間(XSサイズ)×2.85ドル/クレジット(AWS東京リージョン)=2.85
また、RAWデータのストレージコストはほとんど無視できると考えられます。2500万行で3.75GBぐらいでした。25.8円
くらいです。
4.公式サポートという安心感
第三者を挟まないため、パイプライン維持コストと依存のリスクが下がりました。
これまで
GA4,ETL Saas、Snowflake、3社の仕様変更にユーザーが対応しなければなりませんでした。
これから
SnowflakeがGA4をサポートしたことで、仕様変更の要因が2社になりました。
今後Snowflake自体の仕様変更は自動的に対応され、GA4の仕様変更も多くはSnowflakeが吸収すると思われます。これによって、パイプライン維持コストも大幅に削減されます。
GA4コネクタの仕様の要点
初めてSnowflakeを触る場合はGA4コネクタが
- トライアルアカウントではサポートされない、つまり新規作成後30日以内のアカウントでは試せないこと
-
GCPのリージョンでSnowflakeアカウントを作成すると試せないこと
に特に注意してください。
現在GA4コネクタで取り込み可能なデータは以下の2種類です。
- 全イベントの生データ
- イベント集計後のレポートデータ
プレビュー中の仕様
- 生データの取り込みはAWSのアカウントで利用可能
- レポートデータの取り込みはAWS,Azureで利用可能
- GCPのサービスアカウント作成が必要
- 生データはBigQueryを介して取り込まれる
- BigQueryのデータが存在するリージョンによっては転送料金がかかります
- 標準では8時間に一回同期が行われます。最小で15分まで間隔を縮めることができます。
注意
- Snowflakeアカウントごとにコネクタのインスタンスを1つだけインストールできます。
- 現状は1つのコネクタごとに1つのサービスアカウントが紐付可能です。
- 複数のWEBサイト(GA4プロパティ)のデータを取り込むことは可能です。
- ユニバーサル アナリティクスはサポートされていません
- BigQueryにGA4のデータが同期されるまでに24時間近くかかるので焦らないことが大事です。BigQueryに載った後は、15分~8時間間隔で同期を行う事ができます。
まとめ
GA4との連携がBigQueryを使っている理由ということはよくあります。
これからAWSやAzureとより深く連携できる、Snowflakeへの移行が進むかもしれませんね。
2024年はSnowflakeの年になるかもしれません❄️
今回の記事は公式ドキュメントをもとにまとめました。
PR
RAKUDEJI株式会社は、世界で一番Snowflakeに詳しい会社を目指し、Snowflakeに特化したサービスを提供しています。
当社には、日本でも数人のSnowflake公認データエンジニア資格「SnowPro Advanced DataEngineer」を保有するエンジニアも在籍しています。
豊富な経験と知見を活かし、貴社のデータ活用を安全かつ効果的に加速させるお手伝いをいたします。Snowflake,Streamlit,AIに関するお困りごとやご相談がございましたら、ぜひRAKUDEJI株式会社の公式サイトからお気軽にお問い合わせください。爆速で貴社のデータ活用をお手伝いいたします。
Snowlfake データクラウドのユーザ会 SnowVillage のメンバーで運営しています。 Publication参加方法はこちらをご参照ください。 zenn.dev/dataheroes/articles/db5da0959b4bdd
Discussion