NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

GA4のBigQuery エクスポート タイプ「ストリーミング」の精度は?「毎日」と「ストリーミング」の比較まとめ

本記事は  デジマウィーク2024  2日目の記事です。
📊  1日目  ▶▶ 本記事 ▶▶  3日目  📈

年 1 回以上の投稿を目指しています、高橋栞です。
最近はBigQueryのエクスポートデータと向き合い、さらにGA4の理解を深めようと尽力しています。

今回はデジマweek 2024 の 2 日目ということで、GA4のBigQueryのエクスポートについての記事を執筆します。
これまでもGA4やBigQueryに関連する記事はいくつか投稿していますので、ぜひこちらもチェックしてください!

従来版Google アナリティクスであるUAが完全に廃止され、いよいよGA4に完全に切り替わりました。
UAでは 360(有償版)プロパティでないとBigQueryのエクスポート機能は利用できませんでしたが、GA4では標準(無償版)プロパティでも利用できます。
BigQuery エクスポートを有効にすると、GAのローデータ(未加工のイベントやユーザー単位の計測データ)がBigQueryのテーブルに保存されるようになり、 クエリを用いてプロパティでは表現できないデータを抽出したり、テーブルをLooker Studioと連携したりすることができるなどメリットがたくさんあります。

BigQuery エクスポート機能を知っている方も知らない方も今後活用できるよう、 今回は 2024 年 10 月時点でのGA4のBigQueryエクスポート タイプ「毎日」「ストリーミング」の違いについてまとめました。

エクスポート タイプの設定を行う

BigQuery エクスポート機能ではエクスポート タイプを選択することができます。
エクスポート タイプには「毎日」「ストリーミング」の 2 種類のエクスポートタイプがあります。
※360限定機能で「毎日(高頻度)」もあります。

BigQuery エクスポートの設定は、GA4 プロパティの管理画面の「サービス間リンク設定>BigQuery のリンク」から設定できます。
※ 1 つのGA4プロパティにリンクできるBigQueryのプロジェクトは1つのみです。
ご自身のプロパティがどのような設定になっているかわからない方は、下記の手順で確認してみてください。

まだBigQueryのリンクをしていない場合は、「リンク」ボタンから設定画面を開けます。
既にBigQueryをリンクしている場合は、リンクしているプロジェクトの情報が表示されます。 プロジェクトをクリックするとエクスポートの設定を確認することができます。

設定を進めると、「②構成の設定」の下部に「エクスポート タイプ」を設定できるチェックボックスが出てきます。
利用したいエクスポート タイプにチェックを入れて設定を進めます。両方選択することも可能です。

BigQueryのリンク設定の詳細は下記のヘルプを参考にしてください。
公式ヘルプ:[GA4] Set up BigQuery Export - Analytics Help

エクスポート タイプ「毎日」「ストリーミング」とは

おおまかに説明すると、
「毎日」を選択すると1日分のデータが、データが計測された翌日以降に毎日1回だけエクスポートされるようになります。
「ストリーミング」を選択すると、当日分のデータが継続的にエクスポートされます。

「毎日」「ストリーミング」の両方を選択すると、「毎日」のエクスポートが完了すると「ストリーミング」のテーブルは自動で削除されて「毎日」のテーブルのみが残る仕様となっているため、
「ストリーミング」でエクスポートされたデータを保存したい場合は別途コピーをする必要があるためご注意ください。

エクスポートされるタイミングの違いだけのように思えますが、細かい仕様の違いがあります。
それぞれのタイプに具体的にどのような機能の違いがあるのか確認してみましょう。

「毎日」と「ストリーミング」の違いをまとめると下記になります。

  毎日 ストリーミング
エクスポート先のデータセット analytics_{プロパティID} analytics_{プロパティID}
エクスポート先のテーブル events_{YYYYMMDD} events_intraday_{YYYYMMDD}
エクスポート先のテーブル テーブルの日付から最大 72 時間かかる
テーブルの日付から最大 72 時間はテーブルが更新される場合があり、過去のデータの再処理が必要になる場合は 72 時間が経過した後でも、随時更新されることがある
データは 1 日を通して継続的にエクスポートされる
テーブルの更新頻度 その日のイベントがすべて収集された後にテーブルが作成される エクスポート設定後数分以内にテーブルが作成され、1 日を通して継続的にエクスポートされる
※events_{YYYYMMDD}の作成が完了すると削除される
BigQuery の料金 エクスポートしたデータ量と保存期間に応じてストレージの費用が発生する
※エクスポート自体に費用は発生しない
エクスポートしたデータ量と保存期間に応じてストレージの費用が発生する
※ストリーミング挿入の費用が追加で発生する
制限 無償版プロパティの場合は、BigQuery Export で 1 日にエクスポートできるイベント数の上限は 100 万件 エクスポートされない項目がある
データの精度 GA4 プロパティで確認できるイベント数と一致する 重複や欠損が生じる場合がある

それぞれ詳細を確認していきましょう。

エクスポート先のデータセットとテーブル

BigQuery エクスポートを設定すると、指定したGoogle cloudのプロジェクトに自動的にデータセットが作成されます。
「毎日」「ストリーミング」のどちらを選んでも、データセット「analytics_{プロパティID}」が作成されます。
エクスポートの設定完了後 24 時間以内にエクスポートが開始します。

データがエクスポートされ始めると、下記のテーブルが作成されます。

  • 毎日: events_{YYYYMMDD}
  • ストリーミング: events_intraday_{YYYYMMDD}

キャプチャの例は「events_(442)」となっていますが、これは「毎日」でエクスポートされた 442 日分のテーブルがまとまって表示されています。
一方で「ストリーミング」のテーブルの方は「events_intraday_(1)」となっています。
これは、「毎日」「ストリーミング」の両方を有効化しているためです。
ストリーミングのテーブル「events_intraday_{YYYYMMDD}」は毎日のテーブル「events_{YYYYMMDD}」が作成されると削除されてしまうため、 1 日分のデータしか残りません。そのため、「events_intraday_(1)」となります。

テーブルの更新タイミング

■毎日
「毎日」で作成されたテーブル「events_{YYYYMMDD}」は、 1 日のデータを取得してから作成されます。
データの取得には、テーブルの日付から最大 72 時間かかります。基本的には翌日の昼頃までにエクスポートされることが多い印象です。
また、テーブルが作成された後もテーブルの日付から最大 72 時間はテーブルが更新される場合があり、エラーやレイトヒット(遅延データ)などで過去のデータの再処理が必要になる場合は、 72 時間が経過した後でも随時更新されることがあります。
たとえば、 2024 年 10 月 1 日のデータはテーブル「events_20241001」にエクスポートされますが、このテーブルが作成されるタイミングは 10 月 2 日~ 10 月 4 日となり、作成後もテーブルが更新される可能性があります。

■ストリーミング
「ストリーミング」で作成されたテーブル「events_intraday_{YYYYMMDD}」は、GA4プロパティで設定後に数分で作成され、1 日を通して断続的にデータがエクスポートされます。
たとえば「ストリーミング」のみを有効化している場合は、2024 年 10 月1 日のデータは 10 月 1 日に作成されるテーブル「events_intraday_20241001」に断続的にエクスポートされます。

「毎日」と「ストリーミング」を併用している場合は、テーブル「events_{YYYYMMDD}」が作成されると、テーブル「events_intraday_{YYYYMMDD}」は削除されます。
たとえば、2024 年 10 月 1 日のデータはテーブル「events_20241001」「event\s_intraday_20241001」それぞれにエクスポートされますが、
10 月 1 日にはテーブル「events_intraday_20241001」のみが作成され、10 月 2 日以降にテーブル「events_20241001」が作成されるとテーブル「events_intraday_20241001」は削除されます。

BigQuery の料金

■毎日
「毎日」の場合、エクスポートしたデータ量と保存期間に応じてストレージの費用が発生します。
ただし、エクスポート自体に費用は発生しません。

■ストリーミング
「ストリーミング」の場合も、エクスポートしたデータ量と保存期間に応じてストレージの費用が発生します。さらに、ストリーミング挿入の費用が追加で発生します。
ストリーミング挿入については、東京(asia-northeast1) リージョンの場合はデータ 1 GB あたり 0.06 ドルの追加費用が発生します。Google 公式ヘルプによると、 1 GB はGoogle アナリティクスのイベント約 60 万件に相当します。(イベントで計測しているデータ量によって異なります)
公式ヘルプ:[GA4] BigQuery Export - アナリティクス ヘルプ

エクスポートすることによってかかるBigQueryの料金についての詳細は下記の公式ドキュメントを参照してください。
公式ドキュメント:料金  |  BigQuery: Cloud Data Warehouse  |  Google Cloud

制限や注意点

■毎日
「毎日」は標準(無償版)のプロパティでは、 1 日にエクスポートできるイベント数に上限があります。イベント数の上限は 100 万イベントです。
360 プロパティでは 1 日あたり最大 200 億のイベントがエクスポート可能です。上限にかなりのゆとりがあるので、 360 の場合はあまり心配する必要はなさそうです。
Google 公式ヘルプによると、以下の場合に「毎日」のエクスポートが停止され、それ以前の数日間のエクスポートは再処理されないとの記述があるので、標準 プロパティをご利用の場合はイベント数に注意しましょう。

  • 標準プロパティがエクスポートの上限を継続的に超える場合
  • 標準プロパティが 1 日の上限である 100 万イベントを大幅に超える場合

[GA4] Set up BigQuery Export - Analytics Help

BigQuery エクスポートにはエクスポートするデータ ストリームを絞り込んだり、エクスポートから除外するイベントを設定する機能があります。 BigQuery とのリンク画面の、「データ設定 > イベントデータ > データ ストリームとイベント」の「データ ストリームとイベントの設定」から設定可能です。 もし 100 万イベントを超えてしまいそうな際は、分析に利用しないイベントは除外するなどして工夫しましょう。

■ストリーミング
「ストリーミング」はベストエフォートのサービスのため、データに重複や欠損が生じる場合があります。
1 日を通して継続的にエクスポートされるため、セッションが複数のエクスポート周期にまたがっていると、そのセッションのレコードが重複して保存されることがあります。
また、下記のようにエクスポートされない項目があり、データが欠損することがあります。

レイトヒット(遅延データ)がエクスポートされない場合があります。


新規ユーザーについては、下記のユーザー アトリビューション データはエクスポートされません。
既存ユーザーのユーザー アトリビューション データは含まれていますが、そのデータの処理が完了するまでには約 24 時間かかります。

  • traffic_source.name(レポート ディメンション: ユーザーのキャンペーン)
  • traffic_source.source(レポート ディメンション: ユーザーの参照元)
  • traffic_source.medium(レポート ディメンション: ユーザーのメディア)


2024 年 10 月時点ではレコード「session_traffic_source_last_click」のフィールドは存在するものの、値はすべてNULLとなりました。
レコード「session_traffic_source_last_click」は 2024 年 7 月にリリースされた比較的新しいフィールドで、セッションの流入元に関するデータが格納されます。

フィールドの詳細については下記の公式ヘルプを参照してください。
※レコード「session_traffic_source_last_click」については現時点では英語ページでのみ記述があります。
公式ヘルプ:[GA4] BigQuery Export schema - Analytics Help

「ストリーミング」の精度は? 実データを確認してみた

「ストリーミング」の制限については記載がありますが、データの精度については言及されていません。
そこで、「ストリーミング」のエクスポートデータの精度がどの程度か、実際にクエリを用いてテーブルのデータを確認してみました。

①重複や欠損はどれくらいか
まずは「毎日」と「ストリーミング」のイベント数と、GA4 プロパティで確認できるイベント数にどれほど差があるかを確認しました。
エクスポートデータは、テーブルのレコード数=イベント数となっていますので、レコード数とプロパティの探索レポートから確認できるイベント数を比較します。

1 週間分のデータを比較すると、「毎日」はGA4 プロパティで確認できたイベント数と完全に一致しました。
一方で「ストリーミング」は、GA4 プロパティと比較すると 1 %未満の誤差がありました。

さらにこの中に重複や欠損はどれくらい発生しているか確認しました。
「毎日」と「ストリーミング」のエクスポートデータを比較すると、
「ストリーミング」の方では重複しているイベントや、欠損しているイベントが何件か見受けられました。
※キャプチャは一部のデータです。見やすいように「タイムスタンプ」「イベント名」「ユーザー識別子」「セッションのID」のみを表示しています。

たとえば 20241013 のデータのうち、
「毎日」にはあるのに「ストリーミング」にはない、欠損しているイベントは 19 件ありました。
「毎日」にはないのに「ストリーミング」にはあり、かつ全く同じレコードがあるような、重複しているイベントは 9 件でした。

欠損と重複がそれぞれ発生しているので、全体のイベント数としての誤差は 1 %未満でしたが、実際の誤差はもう少し大きそうです。
また、今回は 1 日あたり 1 万件未満のイベントが計測されるプロパティで検証しましたが、 1 日あたりのイベント数が多いプロパティでは誤差は多くなる可能性があります。

②流入元の情報はどうなっているか
初回訪問のセッションを抽出すると、「traffic_source.name」「traffic_source.source」「traffic_source.medium」は全てNULLになったので、完全にエクスポートされないようです。

また、「毎日」と「ストリーミング」のエクスポートデータを比較すると、初回訪問のセッションではないにもかかわらず、
「traffic_source.name」「traffic_source.source」「traffic_source.medium」がNULLになってしまうパターンも約 6.3 %(2990 イベント中 188 イベント)ありました。

レコード「session_traffic_source_last_click」についても全てNULLになっていました。
ただし、イベント パラメータ「campaign(event_campaign)」「source(event_source)」「medium(event_medium)」の値は取得できたので、イベント スコープでの流入元の分析はできるようです。

スコープについては下記の記事にまとまってますので、ぜひ参考にしてみてください。 tech.nri-net.com

まとめ

改めて確認すると、エクスポートのタイミングやテーブル以外にも様々な違いがありました。
精度では「毎日」が優勢ですが、エクスポートされるタイミングが遅いのが大きなデメリットです。
一方で「ストリーミング」のスピード感はかなり魅力的ですが、データの欠損や重複など、データの精度や一部の項目が使用できないのがデメリットです。
両者のメリット・デメリットを理解し、ご自身の環境や分析目的に合った機能を使い分けましょう!

また、執筆時点ではベータ版ですが最近ではエクスポート タイプ「毎日(高頻度)」が追加されたり、スキーマが追加されたりと、BigQuery エクスポートの機能は頻繁にアップデートがあります。
ますます活用しやすくなっていくと思うので、これを機にBigQuery エクスポートの設定を見直していただき、有効に活用していただけると幸いです!

執筆者高橋栞

Google アナリティクスを中心としたGoogle マーケティング プラットフォーム(GMP)のテクニカルサポートを担当しています。