Looker Studioに離脱数が出ない!代わりにBigQueryを使って表現する方法

BigQuery

Looker StudioをGA4と連携すると、GA4でもおなじみのディメンションと指標、そしてLooker Studio固有のディメンションが多く利用できるようになるが、「離脱数」に関してはいつまで経っても使えるようにならない。

Looker Studio 離脱数が出てこない

離脱数は離脱率を算出するためにも必要で、サイト分析でも欠かせない指標の1つであるが、このおかしな状況が今後変わる気配もなさそうだ。

そこで本記事では、GA4ではなくBigQueryとの連携から、Looker Studioで離脱数および離脱率を可視化する方法について解説する。

本記事を読む前に…

前提として、BigQueryを導入していて、GA4のデータがBigQueryへエクスポートされている必要があるので、それらの設定がまだの方はまずそちらからご対応お願いします。

BigQueryで離脱数・離脱率を抽出する

以下の2パターンでサンプルクエリを提示する。

  • ページごとの離脱数・離脱率を抽出するクエリ
  • 月次で離脱数・離脱率を抽出するクエリ
クエリに関しての注意事項
  • コメントアウトしているところに要注意
  • サブクエリは思考回路がバグりやすいので、あえてWITH句を用いて、上から順番にテーブルの形成が理解できるようなクエリにしている
  • SELECT句やWHERE句のように、SQLの節は大文字で表されることが多いが、僕の好み上、すべて小文字で記述している。結果自体に問題はない。

ページごとの離脱数・離脱率を抽出するクエリ

with predata1 as (
  select
    event_timestamp,
    (select value.string_value from unnest(event_params) where key = "page_location") as page_url,
    concat(user_pseudo_id, (select value.int_value from unnest(event_params) where key = "ga_session_id")) as session_id
  from `analytics_280494569.events_*` -- 各人固有の文字列になっているはずなので、ご自身のを確認し、変更いただく必要あり!
  where event_name = "page_view" and _table_suffix between '20241101' and '20241107' -- ご自身で抽出したい期間があれば、それにあわせて柔軟に変更いただいて良い
), predata2 as (
  select
    page_url,
    session_id,
    case
      when row_number() over (partition by session_id order by event_timestamp desc) = 1 then 1
      else 0
    end as exit
  from predata1
)

select
  page_url,
  sum(exit) as exit,
  count(session_id) as sessions,
  round(safe_divide(sum(exit), count(session_id)), 3) as exit_rate
from predata2
group by page_url
order by sessions desc;

集計結果は以下のようになる。

月次で離脱数・離脱率を抽出するクエリ

with predata1 as (
  select
    format_date("%Y-%m", date_trunc(parse_date("%Y%m%d", event_date), month)) as year_month,
    event_timestamp,
    concat(user_pseudo_id, (select value.int_value from unnest(event_params) where key = "ga_session_id")) as session_id
  from `analytics_280494569.events_*` -- 各人固有の文字列になっているはずなので、ご自身のを確認し、変更いただく必要あり!
  where event_name = "page_view" and _table_suffix between '20240901' and '20241130' -- ご自身で抽出したい期間があれば、それにあわせて柔軟に変更いただいて良い
), predata2 as (
  select
    year_month,
    session_id,
    case
      when row_number() over (partition by session_id order by event_timestamp desc) = 1 then 1
      else 0
    end as exit
  from predata1
)

select
  year_month,
  sum(exit) as exit,
  count(session_id) as sessions,
  round(safe_divide(sum(exit), count(session_id)), 3) as exit_rate
from predata2
group by year_month
order by year_month;

集計結果は以下のようになる。

Looker Studioと連携して可視化する

いよいよ、前の章で書いたクエリを利用して、Looker Studioで離脱数と離脱率を可視化する方法について解説する。

手順は以下の3ステップである。

  1. BigQueryと接続する
  2. 可視化させたいグラフ形式を選ぶ
  3. グラフを整える

1.BigQueryと接続する

まずLooker Studioを開き、編集モードにする。
次に、画面上部のツールバーにある「データを追加」をクリックし、「BigQuery」を選択する。

紐づけ方法だが、今回はBigQuery側の設定が特に必要ない「カスタムクエリ」を用いた方法で行う。
一番左にある「カスタムクエリ」から該当するプロジェクトを選択すると、右側にカスタムクエリを入力するエリアが表示されるため、枠内に前章で作成したクエリのいずれかをコピペする。

最後に、画面右下の「追加」ボタンをクリックする。
これで連携は完了だ。画面右側のデータタブに、BigQueryのデータソースが出現しているはずである。

2.可視化させたいグラフ形式を選ぶ

次に可視化させたいグラフ形式を選択するのだが、これは、クエリを書く段階である程度決まっているはずだ。

例えばページごとの離脱数・離脱率を抽出するクエリであれば、系列数(ページ)が多くなるため折れ線グラフにするとぐちゃぐちゃになって見えないし、棒グラフだと、「離脱数」「セッション数」「離脱率」など複数の指標を可視化するには向いていない。

ページごとの離脱数・離脱率を抽出するクエリの場合、表形式が最も良いと判断し、ここでは「ヒートマップ付きデータ表」を選択することにする。

3.グラフを整える

データソースが連携したBigQueryになっているか確認する。

ディメンションに「page_url」、指標に「exit」「sessions」「exit_rate」を設定し、要対策ページの優先度がわかりやすいように、並べ替えを「sessions」の降順に、サブの並び替えを「exit_rate」の降順にしたりして調整する。

以下が完成イメージだ。

なお、列のタイトルが英語でわかりづらい場合は、ディメンションと指標の左側(マウスオーバーすると鉛筆マークになる)をクリックし、名前を入力すればよい。

また、離脱率をパーセント表示にしたい場合は、同じように指標の左側をクリックし、「データの種類」>「種類」>「%」の順でクリックする。

おわりに

本記事では、離脱数の指標が使えないLooker Studioにおいて、BigQuery連携から可視化できるようにする方法について解説した。

BigQueryが絡むと一気にハードルは高くなるが、その分できることが増えて分析の幅が広がるのでぜひともチャレンジしてみてほしい。