Convpath

23.06.09

GA4 の BigQuery エクスポート料金はいくら?目安と料金を抑える方法について

Google Analytics(GA)には、BigQuery というデータベースへローデータを出力(エクスポート)する機能があります。この機能を利用することで、GA の管理画面ではできないような、詳細で精緻な分析が可能です。

一見するとメリットしかない BigQuery のエクスポート機能ですが、無計画に利用をしていると、思わぬ高額の請求を受けるリスクも存在します。

本記事では、そもそも BigQuery とは何か、BigQuery の料金体系、料金を抑える上で気をつけるべきポイントなどをご紹介しますので、計画的な BigQuery の利用にご活用ください。

そもそも BigQuery とは

BigQuery は Google のクラウドサービス Google Cloud Platform(GCP)で提供されるデータベースサービスです。
クラウドサービスというと Amazon の AWS や Microsoft の Azure などが有名ですが、GCP も世界中で利用されているクラウドサービスになります。
クラウドサービスでは、BigQuery のようなデータベースサービスの他にも、ウェブサイトをホストするためのバーチャルマシン(VM)や機械学習による分析を行うためのサービスなど、様々な機能が提供されています。

前述の通り、GA では BigQuery にデータを「エクスポート」することが可能ですが、BigQuery も GCP で提供されるサービスの1つのため、我々の手元に GA4 のデータをダウンロードするわけではなく、Google が管理※する BigQuery 上にデータが出力されることになります。
※ BigQuery が GCP で提供されるマネージドサービスであることについて述べており、データ自体の所有権については言及していません。

GA の BigQuery エクスポート機能とは

これまでの GA では、BigQueryエクスポートは有償版GA(GA360) でのみ利用可能でしたが、新バージョンの Google Analytics 4(GA4)では無償版でも BigQuery エクスポート機能を利用することができるようになりました。

無償版 有償版(360)
旧 GA ×
新 GA

一見すると、無料で GA4 のデータを BigQuery で分析出来ると思われがちですが、実は完全に無償で利用できるという訳ではありません。

それどころか、不用意に全量データを読み込んで分析してしまったり、データを蓄積し続けていると高額の利用料になってしまうこともあります。

GA4 の BigQuery エクスポートにかかる料金

BigQuery は Google が管理しているサービスであることから、利用する際に料金が発生します。

BigQuery には、オンデマンド料金と定額料金(現在は BigQuery Editions)の料金体系があり、ここではオンデマンド料金について解説します。

GA4 エクスポートにおいて主に発生する BigQuery の利用料金は以下の3種類で、いずれもデータ量に応じて料金が増える従量制の料金体系となっています。

  • 「取り込み」料金
  • 「ストレージ」料金
  • 「分析」料金

取り込み料金

取り込み料金は、GA4 のデータを BigQuery にエクスポートする際に発生します。GA4 で計測されたデータ量がそのまま料金に反映されるイメージで、サイトへのアクセスが多い月などに増加し、アクセスが少ない月は低額になります。

ストレージ料金

ストレージ料金は、BigQuery にデータを保管しておくことで発生します。GA4 で BigQuery エクスポートを設定してから期間が経過するほど、課金対象のデータが増加します。
この時、直近90日間編集されているテーブルは「アクティブストレージ」、そうではないテーブルは「長期保存(ストレージ)」に分類され、長期保存ではストレージ利用料が半額になります。

分析料金

分析料金は、BigQuery に蓄積したデータで分析をする際に発生します。分析料金には毎月1TBの無償枠が設けられており、これを超えると$5/TB の従量課金形式になります。

注意点

取り込み、ストレージ、分析と様々な料金形態があると、高額な利用料を想像してしまうかもしれませんが、いずれにおいてもデータ量あたりの料金は安価なため、小規模サイトであれば、すぐに高額な請求額になるという可能性は低いでしょう。

しかしながら、大規模なサイトを運営していたり、長期に渡って BigQuery にデータを蓄積し続けると、高額な請求になりかねません。

結局いくらくらいかかるの?

データ量(GB)あたりの料金に関しては BigQuery の公式ページにも記載されていますが、GA の計測データでは少しイメージがしづらいかもしれません。

Google Analytics 4 の公式ページには、「1 GB は、Google アナリティクスのイベント約 60 万件に相当します(この数は、イベントのサイズによっても異なります)」と記載されています。
実際、弊社でもいくつかの GA4 プロパティで検証を行ったところ 1GB あたり 50万イベント〜200GB万イベントまで確認ができたので、設定するパラメータの数や長さなどによっても大きく変動する模様です。

仮に公式ドキュメントにある 1GB = 60万イベントとしてみると、サービス規模に応じて5年後の料金が大きく変わってくることがわかります。

取り込み&ストレージ合算料金イメージ(概算)

サイト例 小規模メディア 中規模ポータル 大規模 Web&App
月間イベント数/月 1,000 万 イベント/月 7,000 万 イベント/月 3億 イベント/月
初月 月額料金 ¥ 130 ¥ 1,000 ¥ 4,500
1年後 月額料金 ¥ 400 ¥ 3,000 ¥ 13,000
5年後 月額料金 ¥ 1,400 ¥ 10,000 ¥ 44,000

※ 1$ = ¥130 にて試算

5年後の料金を見てみると、小規模メディアでは約1,400円 の月額であったのに対して、大規模 Web & App サービス(ウェブサイトとスマホアプリを提供するサービス)では約44,000円の月額と、シミュレーションに大きな違いが出ています。
料金の差分を生んでいる大きな要因は「ストレージ」料金であり、規模の大きいサイトであるほど、この従量料金が大きな割合を占めることになります。

また上記の「取り込み」料金と「ストレージ」料金に加えて、BigQuery より取得したデータ量に応じて「分析」料金が発生します。

ちなみに、BigQuery では無料枠と呼ばれるものが適用され、毎月10GBのストレージ(と1TBの分析)は無料になりますが、大規模サービスにおいてはそれを遥かに上回るデータ量が送信される可能性が高いため、大きな価格削減効果は期待できません。

サービスの規模とは別に、サービスの種別で見ると、ユーザーごとのイベント数が少ない「メディア系サイト」などでは料金は高額になりにくく、逆にユーザーごとのイベント数が多くなりやすい「ログイン機能を持ったサービス」などでは料金が高額になりやすい傾向があります。

BigQuery の料金を抑える方法

BigQueryにエクスポートされるデータ量を減らす

BigQuery のデータ挿入と保持において、それぞれ従量型の料金形態が存在するため、BigQuery にエクスポートされるデータ量を減らすことで料金の削減を行うことができます。

エクスポートするイベントやデータストリームを限定する

GA4 で計測されている全てのイベントを BigQuery にエクスポートする必要がない場合、それらのイベントを除外することで、BigQuery にエクスポートするデータ量を減らし、取り込みとストレージの料金を削減することが期待できます。
例えば、ユーザーがページを開いている間毎秒毎にイベントを送信している場合など、特定のイベントがデータ量の多くを占めていたりするケースにおいては、イベントをエクスポート対象から除外することによってコスト削減が可能です。

また、データストリーム単位でもエクスポートの除外は可能なため、例えばウェブとアプリを展開しているサービスで、アプリのデータを BigQuery にエクスポートする必要がないという場合は、アプリのデータストリームを除外することで、利用料の削減が可能です。

BigQuery エクスポートでイベントやデータストリームを除外する設定は、「管理」メニューの「プロパティ」配下「BigQuery のリンク」から行うことができます。
設定を行なっているリンクを選び「データストリームとイベントの設定」を選択します。

プロパティの計測範囲を限定する

Google Analytics ではプロパティごとにデータの計測を行なっているため、Google Analytics のタグを埋めるページやドメインを限定することなどで、プロパティに蓄積されるデータ量を削減することができます。
プロパティに蓄積されるデータ量が減ると、BigQuery にエクスポートされるデータ量も減少するため、結果的に BigQuery の取り込みとストレージの料金が削減されることに繋がります。

抽出データを限定する

BigQuery に格納したデータを使って分析をする際に、データベース内の全てのデータを用いて分析をしていると、データベースのリソースを必要以上に多く消費することにつながるため、抽出するデータを絞ることで分析料金を削減することが可能です。

列名を指定する

細かい説明は割愛しますが、BigQuery は列指向のデータベース構造を持っています。
列とは、Excel などでいうところの縦の並びに該当するものになります。
例えば次のようなテーブルがあったとすると、ここでいう列とは青で囲まれている縦の並びを表しています。

名前 太郎 花子
年齢 27 24
性別 男性 女性

BigQuery ではこの「列」の単位でデータを格納しているため、例えば「登録者の名前と年齢を知りたい」というお題において、全ての列のデータを取得しようとすると「性別」という不要な列の情報まで取得してしまうことになります。今回の例では3列しかありませんが、BigQuery では20列以上存在(ネスト構造になっているため実際はさらに存在)するため、全列分のデータを読み込んでしまうと多くな不要なデータを読み込んでしまう可能性が高いでしょう。
BigQuery などのデータベースからデータを取得する際には SQL という構文を使ってデータを抽出を行うことになりますが、

SELECT * FROM [テーブル名]

というように SQL の中で *(アスタリスク)を使うと、全列分のデータを取得するという意味合いになってしまいます。
非常に便利なコマンドではあるのですが、不用意に用いると料金を引き上げる要因となりますので、特に定期的に実行するクエリなどを作成する際には注意が必要です。

とはいえ、列名を忘れてしまったり、どういったデータが入っているか確認したい時はあるものです。
そういった際にはテーブルの「スキーマ」や「プレビュー」を見ることで、どのようなデータが入っているのかを事前に確認することが可能です。

スキーマ

プレビュー

_table_suffix を使う

BigQuery にエクスポートされた GA4 のデータは1つのテーブルではなく、日付毎に分割されたテーブルに格納されています。
1日毎にしかデータが抽出できないと分析に支障をきたすため、ワイルドカードを用いて分析を行います。

ワイルドカードについては公式ドキュメントにも説明がありますが、データの取得元を指定する際に、*(アスタリスク)を使うことで複数のテーブルを対象にデータの抽出を行うことができます。
例:
ワイルドカードなし

SELECT FROM `ga4-bq-export.analytics_xxxxx.events_20230504`

ワイルドカードあり

SELECT FROM `ga4-bq-export.analytics_xxxxx.events_*`

これで複数の日付を跨いで分析を行うことが可能になりますが、この時特定の方法で条件を行わないと、全期間のデータを一度抽出することになってしまい、必要以上にデータベースのリソースを消費し、必要以上に分析料金が発生してしまう要因になります。

これを防ぐために、_table_suffixという列で抽出条件を指定することで、必要な日付分のみのデータを取得し、分析料金などを抑えることが可能になります。
以下のクエリの where 以降が該当部分になります。

select
count(distinct user_pseudo_id) as user
from
`ga4-bq-export-384516.analytics_371746480.events_*`
where
_table_suffix between ‘20230101’ and ‘20230131’ — _table_suffix を条件に抽出データを絞る

まとめ

BigQuery へのエクスポートはGA4から無償版でも使用できるようになりましたが、BigQuery の利用料を考慮しないと金額の見積もりを誤ってしまう危険性があります。必要以上にデータをエクスポートしないよう、プロパティの計測範囲を見直したり、エクスポートイベントを設定するなど、対策を行うようにしましょう。

   
恭平大谷

恭平 大谷

アイオイクス株式会社にてCROサービスの立ち上げを行い、株式会社bitFlyerではデータ分析部門の責任者を担う。ECサイト、リード獲得、動画配信サービス、ウェブ&アプリなど多岐に渡るサービスで GA4 の導入〜分析までをご支援。2021年4月に株式会社Convpath を設立。

back iconブログTOPヘ戻る
polygon icon
おすすめ記事

RECCOMEND