GA4のレポートデータをbigquery data transferで転送


リリース時点で一般公開(GA)機能。ga4コンソールにあるレポートテーブルの転送なので、基本の集計に限って言えばテーブル参照やクエリがやりやすくなっている

設定

権限

bigquery data transferとして、ユーザーアカウントか、サービスアカウントが選べる。ここではサービスアカウントにする。ドキュメントにある通りroles/bigquery.admin を付与した

ドキュメントにある通り、必要な権限のみ含むカスタムロールを定義するのがよさそうだが、手間なのでadminを使う。GCPのiam画面は省略

GAのコンソールより、管理→アカウントのアクセス管理画面にて、閲覧者にサービスアカウントを追加する

ga-console-account

転送設定

GCPのコンソールから転送設定→作成より

GAのプロパティIDが必要。あとは適当に設定する

設定したものがこちら

bq-transfer-config

  • バックフィル

bigquery data transferはバックフィル実行ができる。GA4の過去データを転送できるが、遡れる期間はGA4のデータの保持期間に依存する

保存期間はGAのコンソールを見たところデフォルトで以下だったが、

イベントテーブルバックフィルしたら二ヶ月以上遡って取得できた。謎。GAのコンソールでは1年分表示できるのでそれくらいは保持しているのやも

ga-data-save-period

従来の転送方法と比べて、転送の構成をbigquery側で設定でき、サービスアカウントや通知も使えて便利

テーブル、クエリ

作成されるテーブル

公式にカラム名含め一覧されている

https://cloud.google.com/bigquery/docs/google-analytics-4-transformation

明記されてないが、event dateを日毎のパーティション分割(_partitiondateカラム)として設定して、viewにおいて_DATA_DATEとしているっぽい。よって日付単位が最小の集計粒度となる

また各テーブルのsuffixにプロパティIDがついており、複数のプロパティの転送を同一データセットに送っても問題ない

クエリ

  • 日別のページごとのユーザーあたりのモバイル、ウェブの閲覧数

公式ドキュメントによるとscreenPageViewsPerUserの計算式は以下

(screen_view + page_view events) / active users

SELECT
  _DATA_DATE as d,
  unifiedScreenName,
  screenPageViewsPerUser
FROM `projectId.ga4_transfer.ga4_PagesAndScreens_24xxxxxx`
WHERE unifiedPagePathScreen = "/add-infographic-page/"
ORDER BY _DATA_DATE
d	unifiedScreenName	screenPageViewsPerUser
2025-10-02	geminiでインフォグラフィックを生成してgoogle sitesで公開する	1.0
2025-10-03	geminiでインフォグラフィックを生成してgoogle sitesで公開する	1.0
2025-10-04	geminiでインフォグラフィックを生成してgoogle sitesで公開する	1.0

カスタムレポートの転送

細かい説明がのっていたのでやってみる

https://cloud.google.com/bigquery/docs/google-analytics-4-transfer?hl=ja#custom_reports

転送設定にて、カスタムレポートの設定ができる。ディメンションとメトリクスを指定し、テーブルを1つ作ることができる。ここではデフォルトで作られるテーブルでは集計されない、曜日とか時刻とかを設定してみる

以下のように設定したときのクエリと結果

ga4-transfer-custom-report.png

  • クエリ
SELECT *
FROM `projectId.ga4_transfer.ga4_custom_reports_24xxxxxx`
LIMIT 2
  • 結果
dateHour	dayOfWeekName	eventName	eventValue	screenPageViews	sessions	_LATEST_DATE	_DATA_DATE
2025102003	Monday	first_visit	0.0	0	1	2025-10-20	2025-10-20
2025102003	Monday	session_start	0.0	0	1	2025-10-20	2025-10-20

screenPageViewsはページ閲覧時にカウントされるのでpage_view以外では値は0になる

エラー集
  • 存在しないディメンション名を設定したら転送時にエラーが起きる
Error code 3 : Dimension event_name is invalid or not accessible by property 24xxxxxx.
  • テーブル名を変えずにディメンションなどの設定を変更すると既存カラムは残る

エラーは起きないが、カスタムレポートの設定値を変更してから再実行すると、転送先のテーブルにカラムを追加する形でデータが転送された。不要なカラムが残ってしまうので、テーブル名を変更しない場合は一度手動で削除してから変更するといい

また、既存のGAのレポートの仕様通り、ディメンションとメトリクスの組み合わせと値の意味に注意する。AIに回答させたらよかったのでまんま載せておく

chromeのAIモードの回答
```
Google Analytics(GA)では、ディメンションとメトリクスは、それぞれ異なるデータ単位で存在しており、すべての組み合わせが可能というわけではありません
。有効な組み合わせは、データのスコープ(ヒット、セッション、ユーザーなど)によって決まります。
ディメンションとメトリクスの単位

    ディメンション(分析軸): データを分類するための項目。
        ユーザー: 性別、年齢、地域、ユーザーIDなど、ユーザーの属性に関する情報。
        セッション: ユーザーがサイトに訪問してから離脱するまでの単位。トラフィックソース、デバイス、ランディングページなどが含まれます。
        イベント: ページビュー、クリック、コンバージョンなど、ユーザーがウェブサイトで行った特定の操作。
    メトリクス(指標): 数量や割合など、数値で表されるデータ。
        ユーザー数、セッション数、イベント数: ユーザー、セッション、イベント単位で集計される基本的な指標。
        エンゲージメント時間: ユーザーがサイトで実際に活動していた時間。ミリ秒単位で計測されます。
        表示回数(PV): ページが表示された回数。UAでは「ページビュー数」と呼ばれていました。

組み合わせの制限と確認方法
GAでディメンションとメトリクスを組み合わせる際には、以下の点に注意が必要です。

    スコープの不一致: 異なるスコープ(例:ユーザーとセッション)のディメンションとメトリクスを組み合わせると、レポートに正しくないデータが表示される場合があります。
    組み合わせの制限: 一部のディメンションとメトリクスは、Google Analytics Report APIなどでも組み合わせに制限があります。開発者向けツールを使うと、どの組み合わせが有効かを確認できます。

適切な組み合わせの例

    トラフィック獲得: 「集客チャネル」(ディメンション)と「ユーザー数」(メトリクス)を組み合わせることで、どのチャネルからの新規ユーザー獲得が効果的かを分析できます。
    行動分析: 「ページタイトル」(ディメンション)と「表示回数」(メトリクス)を組み合わせることで、どのページが最もユーザーの関心を引いているかを知ることができます。
```

参考

  • 公式ドキュメント

英語のほうが細かい項目(custom reportの転送設定など)についても触れられている

https://cloud.google.com/bigquery/docs/google-analytics-4-transfer