Google Analytics APIを使ってデータを取得していたところ、管理画面上の数値とずれることがあったのでメモ。
実装
Googleスプレッドシートで用意されているGoogleアナリティクスのアドオンを使って試してみます。
アドオンのインストールがまだの場合、以下の記事を参照ください。
Googleスプレッドシートのアドオンを使ってGoogleアナリティクスのレポートを作成する
アドオンのインストール後、アドオン > Google Analytics > Create new report を選択します。
レポート名とアカウントの設定を行います。
今回レポート名はtestとしました。
MetricsとDimensionsの設定を行います。
Metricsにはga:users,ga:sessions,ga:pageviews、Dimensionsにはga:year,ga:monthを設定しました。
設定完了後、Create Reportをクリックします。
シートが生成されるので、Start DateとEnd Dateを設定します。
データを取得したい月から過去2年分のデータを取得したかったので、データを取得する月を2018年6月として、Start Dateを2016-07-01、End Date2018-06-30としました。
アドオン > Google Analytics > Run reportsを選択します。
しばらく待つとレポートが作成されました。
2018年6月分のデータを管理画面上で確認すると、APIで取得した値とずれていることが確認できました。
原因と対策
最初はデータ量が多いことによるサンプリングが原因かと思ったのですが、サンプリングはセッション数が50万件以上の場合などの条件があるため、今回はサンプリングの条件には当てはまりませんでした(今回は2年分で17万件程度)。
色々と調べていたところ、公式のヘルプで以下のような記述を見つけました。
アナリティクスでは新しいレポートが定期的に追加され、指標の計算方法に変更が加えられることがあります。レポートの対象期間に、新しいレポートが追加される前、または指標の計算方法が変更される前の期間が含まれる場合、アナリティクスはアドホック クエリを発行してデータをサンプリングすることがあります。
「ユーザー数」指標と「アクティブ ユーザー」指標を含むレポートに 2016 年 9 月以前のデータが含まれている場合は、データのサンプリングが行われます。
引用 – アナリティクス ヘルプ
今回は過去2年分で2016年9月以前のユーザー数を取得しているため、これが原因でサンプリングが行われていたようです。
試しに過去2年分ではなく、2016年9月~2018年6月と2016年8月~2018年6月の二つで出力を試してみます。
2016年9月~2018年6月で試してみると、サンプリングが発生しませんでした。
2016年8月~2018年6月の場合はまだサンプリングが発生していました。
「2016年9月以前」だと2016年9月のデータを含んでいてもサンプリングが発生しそうな気がしますが、試してみた分には2016年8月のデータが入っていると駄目なようでした。
今回は過去2年分のデータを取得するようにしたかったので、2年分をまとめて取得するのではなく、2年分を1ヶ月毎に取得する方法で対応しました。
【参考サイト】
コメントが承認されるまで時間がかかります。