GoogleアナリティクスがUAからGA4へアップデートされて、「直帰率」の定義が変わりました。
- UA:1ページのみのセッションのパーセント数(1ページだけを見て、すぐ離脱した割合)
- GA4:エンゲージメントのなかったセッションの割合
エンゲージメントベースに変わったとはいえ、Webサイト運営者はUA指標の直帰率も追いたいところです。1PVだけの離脱はシンプルに減らせた方が良いので。
そこで本記事では、GA4×BigQueryでUA指標の直帰率を計測するSQLクエリを、サイト全体と各ページごとに分けて解説していきます。
- 国立理系修士2年(23歳 | 専攻は機械学習)
- SEOマーケティング会社で実務を1年ほど経験
- ブログ運営3年目(月間10,000PVほど)
- 2025年4月からIT事業会社のデータサイエンティストとして働く予定で、現在はBigQueryを活用したGA4やGSCのデータ分析に注力
GA4×BigQueryにおける基本的なSQLの使い方は下記記事で紹介してますので、参考までにどうぞ<(_ _)>
» GA4とBigQueryを連携するメリット& 基本的なSQLの使い方を解説
また、SQL(BigQuery)スキルを習得するために以下のUdemy講座はおすすめです。
» BigQuery で学ぶ非エンジニアのための SQL データ分析入門
サイト全体でのUA指標の直帰率を計測するSQLクエリ
まずは、サイト全体でのUA指標の直帰率を計測するSQLクエリについて紹介していきます。
SQLクエリ
/*
サイト全体の直帰率を集計(UA指標)
*/
with predata as (
select
event_timestamp,
user_pseudo_id,
(select value.int_value from unnest(event_params) where key = 'ga_session_id') as session_id
from
`ga4-bigquery-pj-392206.analytics_342165491.events_*`
where
_table_suffix between '20240401' and '20240430'
and event_name = 'page_view'
),
predata2 as (
select
case
-- セッションIDごとにグループ化し、イベントが発生した時刻順にデータを並べ、最初に発生したページビューを1とする
when row_number() over(partition by session_id order by event_timestamp) = 1 then 1
-- それ以外(セッション内で最初のページビューではない場合)は0とする
else 0
end as entrance,
case
-- セッション内のページビューイベントの総数が1であれば1とする(直帰したとカウント)
when count(1) over(partition by session_id) = 1 then 1
-- それ以外(セッション内のページビューイベントの総数が1以上である場合)は0とする(直帰していないとカウント)
else 0
end as bounce
from predata
)
select
sum(entrance) as landing,
sum(bounce) as bounce,
-- 直帰率の計算(直帰数 / 流入回数 * 100)
case
-- ゼロ除算のエラーを防ぐ
when sum(entrance) > 0 then round((sum(bounce) / sum(entrance)) * 100, 2)
else 0
end as bounce_rate
from
predata2
;
上記は2024年4月中の当サイトにおけるUA指標の直帰率を計測するSQLクエリです。
詳しい内容はコメントアウトに記載してある通りです。
実行結果
“landing” はサイト全体の流入回数を表し、”bounce” は直帰数、 “bounce_rate”はサイト全体の直帰率です。
当サイトの全体の直帰率は78.15%ということがわかります。
各ページごとにUA指標の直帰率を計測するSQLクエリ
続いて、各ページごとにUA指標の直帰率を計測するSQLクエリについて紹介していきます。
SQLクエリ
/*
ページごとの流入回数、直帰数、直帰率を集計
*/
with predata as (
select
event_timestamp,
user_pseudo_id,
(select value.int_value from unnest(event_params) where key = 'ga_session_id') as session_id,
(select value.string_value from unnest(event_params) where key = 'page_location') as page_location
from
`ga4-bigquery-pj-392206.analytics_342165491.events_*`
where
_table_suffix between '20240401' and '20240430'
and event_name = 'page_view'
),
predata2 as (
select
page_location,
case
when row_number() over(partition by session_id order by event_timestamp) = 1 then 1
else 0
end as entrance,
case
when count(1) over(partition by session_id) = 1 then 1
else 0
end as bounce
from predata
)
select
page_location,
sum(entrance) as landing,
sum(bounce) as bounce,
case
when sum(entrance) > 0 then round((sum(bounce) / sum(entrance)) * 100, 2)
else 0
end as bounce_rate
from
predata2
group by
page_location
order by
landing desc
;
先ほど紹介した「サイト全体の直帰率を計測するSQLクエリ」に、 “page_location” ごとにグルーピングしてあげる処理を追加しただけです。
実行結果
各ページごとの流入回数、直帰数、直帰率がわかります。
直帰率(bounce_rate)が高い記事から内部リンク設計を行い、サイト全体の直帰率を減らしていくというのが主な改善方法になるかなと思います。
まとめ:UA指標の直帰率を計測して、サイト全体の直帰率を改善していこう!
本記事では、GA4×BigQueryでUA指標の直帰率を計測するSQLクエリを、サイト全体と各ページごとに分けて紹介しました。
当サイトでも直帰率を減らすための施策を打っていきたいですね〜
その改善事例を別記事で紹介できるように頑張っていきます!
それでは本記事は以上とします。最後まで読んでいただきありがとうございました。