2023年12月14日・約13分
データエンジニア
この記事は trocco Advent Calendar 2023 の 17 日目の記事となります。
この記事では、Google Analytics4(GA4)のデータを連携した際に生じるデータの乖離について整理します。
GA4 のデータを見る方法として、以下のケースが多いと思います。
どちらかに寄せている組織もあれば、ビジネスサイドはコンソールを見て、エンジニアは BigQuery を見てるということも少なくないでしょう。
そんなとき、
ということが起きることがあります。
適切にデータを使うために、どうしてデータの乖離が起こるのか、どういう時に気をつけると良いかを紹介します。
trocco でGA4 のデータを BigQuery に連携することも可能です。
実態としてはData Export APIを叩いています。
ディメンション(最大 8 個)とメトリクス(最大 10 個)を指定し、各ディメンションごとに集計されたメトリクスが入ったデータを連携することができます。 つまり、連携できるデータは集計データになる部分が BQ Export と大きく異なる部分になります。
連携したいディメンション/メトリクスを選定する際は公式のDimensions & Metrics Explorerを使うことで、 データの互換性の確認や実際の出力を結果も確認できるためおすすめです。
データの乖離が起きる原因は主に以下の 2 点になります。
これが発生するのは、コンソールと trocco での連携になり BQ Export では発生しません。
では、それぞれどのような条件で発生し、どのような対処が可能か整理します。
サンプリングとは、対象データすべてを使って集計するのではなく、対象データの一部から全体を予測した数値を算出することを指します。
つまり、サンプリングが発生しているときは正確な数値ではなく、あくまで推定値であるため誤差は発生することに注意しないといけません。
サンプリングは、コンソールと trocco による連携で発生します。
コンソール上での判別方法は各カードの右上にあるマークをクリックすることで見ることができます。
trocco では、1job で収集するデータ量が多すぎるとサンプリングが発生してしまいます。 上限は、標準の Google アナリティクス プロパティでイベント 1,000 万件、Google アナリティクス 360 プロパティで最大 10 億件になります。
これを回避するには、連携するデータを絞ったり、変数を使ったループ処理をする必要があります。
しきい値とは、ユーザーのプライバシーを保護するために、個人が認識できないようにする仕組みです。 これは一定の条件を満たされると、データが表示されない/連携されない = 欠損が起きます。
対象の主なデータは以下になります。
しきい値による欠損は、コンソールと trocco による連携で発生します。
コンソール上での判別方法は、サンプリングと同様に各カードの右上にあるマークをクリックすることで見ることができます。
trocco では、連携するデータが上で示したデータに該当するかどうかによります。 ディメンションだと年齢、性別などが該当し、メトリクスだとユーザー数などが該当します。
データの乖離が発生する原因は基本的にコンソールと Data Export API にあるため、BQ Export のデータを使う方針にするのが良いでしょう。
ただ BQ Export も無料枠だと 1 日あたり 100 万イベントが上限があるため、上限を超える場合は trocco の利用も選択肢に入るでしょう。
また、見たいデータによって BQ Export と trocco による連携データを併用する選択肢もあるでしょう。
例えば、各ページのセッション数とユーザー数を BigQuery で見たいケースを考えてみます。
上記から、ユーザー数は BQ Export でないと正確にデータは取れないですが、セッション数は trocco による連携でも正確なデータを取ることができます。
もし BQ Export の対象イベントを page_view のみにする対応で無料枠に収まるのであれば、BQ Export と trocco を併用することで正しくデータを提供することも可能になります。
プロパティのイベント数に影響するのでこの例で解決できる範囲も限られていますが、このように必要な指標を整理することで併用する選択肢を検討することも可能です。
上記のような対応も難しく、trocco でユーザー情報も連携したいケースは存在すると思います。 その時にできる限り欠損をなくす方法は、「ディメンションを減らすこと」になります。
欠損が起きるのは 1 レコードに該当するメトリクスがしきい値より少ないと欠損が起きるため、レコードに該当するメトリクスが多ければ欠損は起こりにくくなります。
という設定で連携をすると、② の方が欠損が生じます。 なぜなら 1 レコードの粒度が region が入ったことで細かくなり、該当するユーザー数が減少するためしきい値に届かないデータが増えてしますからです。
このように trocco で連携する際には以下のことを整理する必要があります。
この記事では、GA4 のコンソール・BQ Export・trocco による連携データの乖離について整理しました。
GA4 は強力なツールで意思決定に用いられることも多いです。 しかし、上記のようにデータ集計上の落とし穴も存在しするため、仕様を理解し適切なデータ処理を行い、正しいデータを提供できるような基盤を整えることが重要になります。
trocco の話というより GA4 の話がメインになりましたが、自分が直近でつまづいたところでもあったのでまとめてみました。