GA4のデータをBigQueryで集計してみた

今回はGA4(Google Analytics4)からエクスポートされたテーブルの集計を行いました。GA4のデータは通常のテーブルデータと異なり少し癖があります。

※このブログの内容は個人の意見・見解となります。また、記事の内容の正確性については保証いたしません。本ブログの目的は分析結果をアウトプットしていくことによる自身のデータ分析力向上を主としています。誤りや違うアプローチの方が良いという事も多分にあると思います。後学のため、「もっとこうしたらいい」や誤りを見つけた場合はコメント欄などでお知らせいただけると有難いです。

○GA4のデータについて
 GA4ではログをBigQueryにエクスポートできます。これにより、アプリ、webページの分析が行いやすくなった反面、GA4を処理するための独特な知識も必要となります。今回は実際によく使うpv数やユーザー数を取得しながらGA4のデータの扱い方を見ていきましょう。

○BigQueryを利用する注意点
 BigQueryは処理するメモリに応じて費用が発生します。SELECT *のような取得をすると処理するメモリ量が多くなってしまうため基本的には必要なカラムだけ取るようにすると良いです。

○GA4からエクスポートされたデータについて
 GA4からエクスポートされたデータの構造を確認してみましょう。今回はGAで用意されているBigQueryサンプルデータを使用していきます。https://developers.google.com/analytics/bigquery/web-ecommerce-demo-dataset
 

event_paramsのカラムに入っているデータを見ていただくと通常のデータセットと違い入れ子構造になっています。入れ子構造を解除するには「UNNEST関数」というものを使用します。そして、event_paramsは「event_params.key」、「event_params.string_value」、「event_params.int_value」、「event_params.float_value」などのカラムに分けられてデータが格納されています。主に使うのはstring_valueと呼ばれる文字列を使用します。

○UNNEST関数
 UNNEST関数を使用することにより入れ子構造を解きSQL文が成立する形でデータを取得できます。以下のクエリではevent_params.keyからpage_title,page_locationをカラムとして取得しています。

UNNEST関数を使用することで上手く通常のテーブルにする事ができます。
WHERE句の.key=’ ‘で取得したい項目を入力すれば任意の値を取得が可能です。

○pv数

では実際に、GA4のデータからページ毎のpv数を取得してみます。
まずはページ毎に集計をするためにevent_params.keyからpage_titleを取得し、GROUP BYをします。
pv数は閲覧数のためevent_nameがpage_viewのものに絞り、count()で集計してあげることでページ毎のpv数を集計できます。

○ユーザー数、UU数

サイト、アプリに訪れたユーザ数、UU数を確認するだけであれば入れ子構造を考えなくても取得が可能です。
event_name=”session_start”でセッションを開始した際のデータに絞り、user_pseudo_idをCOUNT()するとユーザー数、COUNT(DISTINCT)でUU数を取得できます。

○まとめ
UNNEST関数を使用することによりGA4のデータをBigQueryで処理できました。もっとデータを触って扱いに慣れていきたいと思います。

○最後に

このような形で分析した結果や試してみたことを週に1回(目標)ペースで掲載しています。データ分析のキャリアを歩み始めたのですが、データの解釈、分析力が低いと感じ今回、このような形でアウトプットをしていくことにしたため、ぜひ、アドバイスやご指摘をいただけると幸いです。