▼背景
LookerStudioのグラフをスプレッドシートにて再現するために、GA4 APIにてスプレッドシートに値を書き出す作業を実施した。
しかし、まったく同じデータが書き出されるように設定を行ったのにも関わらずLookerStudioとGA4 API,探索レポートでの値に相違があり、LookerStudioのみ異なる値であった。
なぜ違いが出るのかを調査し、まとめる
同時にサンプリングが掛かりやすい状況などについてもまとめる
▼まとめ
結論としては、LookerStudioでのみサンプリングが掛かっていたから値が異なっていた。
LookerStudioではGUIにて設定した内容を裏側でAPIクエリに変換して送信を行う。その際にクエリが複雑化しやすいらしい。
そのため、APIを直接叩いた際や探索レポートを使用した際よりもサンプリングが発生しやすい
GA4:Looker Studio・探索レポート・GA4 APIの違い
項目 | Looker Studio | 探索レポート | GA4 API |
---|---|---|---|
データ取得方法 | GA4のData API経由 | GA4の管理画面内で直接クエリ実行 | GA4のData API経由 |
サンプリングの有無 | 起こりやすい(特に期間・ディメンション多い時) | 起こりにくい。有料版ならなくすことも可能。 | 起こりにくい(レスポンス内でサンプリング確認も可能) |
リアルタイム性 | やや遅延あり(キャッシュ影響) | ほぼリアルタイム | 実行時点での最新データ取得 |
サンプリング判別 | 不可 | 画面上で「サンプリング中」の表示あり |
samplesReadCounts のレスポンス確認で判別可能 |
サンプリングが起こりやすい状況
簡単に言うと処理データ量が大きいとサンプリングが掛かる。
以下に処理データ量が大きくなる状況をまとめる
サンプリングの発生要因 | 詳細説明 |
---|---|
期間が長い | 期間が長いとデータ量が多くなる |
フィルタをかける | 特定の条件で絞り込む際、まず全体データを読み込むため負荷が高くなる |
複雑なセグメント・条件指定 | セッション単位のセグメントや、複数条件のフィルタを組み合わせると、システム負荷が上がる。 |
複数ディメンションの利用 | ディメンション・指標数が増えるとデータの行数が長くなる。 |
その他、リアルタイムデータ取得においてもサンプリングがかかかることがある。最新データ取得時は未確定データが多く、部分データのみ対象にしたサンプリング状態で返される
▼個人的に気になった・知らなかった点
フィルターを掛けたらサンプリングが掛かりにくくなる?
実はフィルターを掛けたらサンプリングが掛かりやすくなる
直感的には、フィルターを掛けると対象となるデータが絞られるためサンプリングが掛かりにくくなるのではないかと考えるのが自然だ
しかし、フィルターを掛ける際には一行ずつデータを確認してフィルターに合致するかを確認するという処理が走るためデータの処理量を抑えるためにサンプリングが行われる。
サンプリングが掛かるかどうかは「処理データ量」を基準に考えると分かりやすそうだ
LookerStudioではキャッシュ(メモリ)が使われている
設定した更新頻度間は以前に実行したクエリの結果をメモリに保存し、そのメモリのデータを活用している。
➡更新頻度を12時間にしていると、その12時間の間にデータが更新されてもLookerStudio上に表示されるデータの更新は12時間の間は行われない
仮説だが、12時間の間に使用したデータにサンプリングが掛かっていると、次に作成したグラフ自体のデータ量が少なくてもサンプリングが発生する可能性もありそうだ
サンプリングの有無はLookerStudioでは見れない
GA4 APIを直接触る時、探索レポートでは確認することが出来る。
探索レポート・GA4 APIのデータ処理の裏側はどうなっている?
BigQueryの生データを一次集計したデータを探索レポート、GA4 APIは活用している
調べてもヒットしなかったので言い切れないが、ユーザごと・セッションごとなどに予めイベント数などを集計しているイメージだと私は理解している
セッションの中でのイベントの順番などを探索レポートでは考慮出来ないこともこれで理解できる。