🎉

GA4もSnowflakeで分析する時代がついに来たぞ!

2024/02/02に公開

2024年1月29日、GA4とSnowflakeの公式コネクタがリリース(プレビュー)されました。
ついに、GA4もSnowflakeで分析する時代がやってきました。
GA4×Snowflakeの組み合わせがやっとプロダクション運用可能なレベルに到達したのです。

https://x.com/rakudeji/status/1751471609502970183?s=20

https://x.com/rakudeji/status/1752869202535555431?s=20

これは今回のコネクタリリースでGA4のプロパティ取り込みパイプラインの運用コストが圧倒的に下がったことに起因します。
公式コネクタのリリース以前からGA4をSnowflakeに取り込むことは可能でしたが、その運用を継続することは様々な観点から困難でした

この記事では、従来の取り込みソリューションと、最新の公式コネクタを比較して4つの観点から素晴らしい部分を解説します。

  1. GA4のデータの取り込みが容易になった
  2. 取り込み後のデータの冗長な変換が不要になった
  3. 取り込みの金銭的コストが圧倒的に低くなった
  4. 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のフォローもお願いします😊
https://twitter.com/rakudeji

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社の仕様変更にユーザーが対応しなければなりませんでした。
例えば最近では、AirbyteがNormalizationをしない方針になったりしていました。(ETLではなく、ELT前提の方針になりました。)

これから

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コネクタの動作を理解するには、Snowflake Native Apps Frameworkを知ると早いです。
ちょうど1/30にSnowflake Native Apps FrameworkがGAしたので、技術的興味がある方に向けてSnowflake Native Apps Frameworkの解説記事も書く予定です。

まとめ

GA4との連携がBigQueryを使っている理由ということはよくあります。
これからAWSやAzureとより深く連携できる、Snowflakeへの移行が進むかもしれませんね。
2024年はSnowflakeの年になるかもしれません❄️

今回の記事は公式ドキュメントをもとにまとめました。

PR

RAKUDEJI株式会社では、データ基盤構築支援のお仕事を受付中です!

  • SnowflakeでのGA4分析のPoC支援(前述のトライアルアカウントの問題を回避します)
  • GA4やFacebook,Google広告データの取り込み
  • その他、AWSやAzureと連携した各種データエンジニアリング

を幅広く承っております。 ぜひX(Twitter)のDMか、フォーム からご相談ください。サービス内容などはLinkedInに記載しております!
https://www.linkedin.com/feed/update/urn:li:activity:7158291653470916608/

Snowflake Data Heroes

Discussion