GA4Query

お問い合わせ

GA4で特定ユーザーのページ遷移を分析するSQLクエリ | GA4QUERY

公開日:2023年04月07日
更新日:2023年04月07日
GA4で特定ユーザーのページ遷移を分析するSQLクエリ | GA4QUERY

本記事ではBigQueryにエクスポートしたGA4(Googleアナリティクス4)のデータを用いて、ウィンドウ関数(LAG/LEAD)を使って特定ユーザーのページ遷移を、セッションごとに抽出するSQLクエリについて解説をおこなう。LTVが高いユーザーやロイヤルカスタマーが、サイト内でどのようなページ遷移をしているのかを把握したい時などに便利なSQLクエリである。

SQLクエリの概要

まずユニークなセッションIDの抽出及びイベントパラメータの抽出方法に関しては、以下の記事を参考にしていただきたい。

参考記事 : 日次のセッション数を集計するSQLクエリ | GA4QUERY

参考記事 : UNNESTでGA4のevent_params内のパラメータを取り出すSQLクエリ | GA4QUERY

ナビゲーション関数(ウィンドウ関数)であるLAG関数とLEAD関数を用いて、前後の page_location を取得する。セッションIDでパーティション(区切り)を作成し、 event_timestamp を昇順で並べることで同一セッション内のページ遷移を時系列で取得できる。

LAG関数

先行する 1 つの行の value_expressionの値を返します。offsetの値を変更すると、どれだけ前の行が返されるかが変更されます。デフォルト値は 1で、ウィンドウ枠内の直前の行を示します。offset が NULL または負の値の場合はエラーになります。

LEAD関数

後続の 1 つの行の value_expressionの値を返します。offsetの値を変更すると、どれだけ後の行が返されるかが変更されます。デフォルト値は 1で、ウィンドウ枠内の直後の行を示します。offsetが NULL または負の値の場合はエラーになります。

下記のクエリサンプルでは、 user_pseudo_id が ‘2135809971.1674633399’であるユーザーのページ遷移を抽出している。

SQLクエリサンプル

今回のSQLクエリは、以下のようになる。

WITH prep AS (
  SELECT
    event_timestamp,
    CONCAT(user_pseudo_id, (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) AS sid,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_location,

  FROM
    `technogram-354804.analytics_291973511.events_intraday_202302*`
  WHERE
    event_name = 'page_view'
    AND user_pseudo_id = '2135809971.1674633399'
)

SELECT
  event_timestamp,
  sid,
  LAG(page_location) OVER(PARTITION BY sid ORDER BY event_timestamp) AS prev_page,
  page_location,
  LEAD(page_location) OVER(PARTITION BY sid ORDER BY event_timestamp) AS next_page,

FROM
  prep
ORDER BY
  event_timestamp,
  sid
;

BigQueryでの集計結果

今回のSQLクエリの実行結果は、以下のようになった。

ChatGPT(GPT-4モデル)によるSQL解説

ChatGPTでの解説を加えてみよう。

このSQLクエリは、指定されたデータセットから特定のユーザー(user_pseudo_idが’2135809971.1674633399’のユーザー)に関するページビューイベントの情報を抽出し、各ページビューイベントにおける前のページ(prev_page)と次のページ(next_page)を表示するものです。クエリは以下のステップで構成されています。

1.WITH句を用いて、prepという名前のサブクエリを作成します。このサブクエリでは、データセットからイベントのタイムスタンプ(event_timestamp)、セッションID(sid)、およびページのURL(page_location)を取得しています。イベント名(event_name)が「page_view」であり、ユーザーの擬似ID(user_pseudo_id)が「2135809971.1674633399」であるレコードに限定しています。

2.SELECT句を使って、prepサブクエリからイベントのタイムスタンプ(event_timestamp)、セッションID(sid)、前のページ(prev_page)、現在のページ(page_location)、および次のページ(next_page)を取得します。前のページ(prev_page)と次のページ(next_page)は、LAG関数とLEAD関数を使って、同じセッション内での前後のページビューイベントのページのURLを取得しています。これらの関数は、OVER句を使ってセッションIDでパーティションを分け、イベントのタイムスタンプで並べ替えて適用されています。

3.最後に、結果をイベントのタイムスタンプとセッションIDで並べて表示します。

このクエリを実行することで、特定のユーザーがどのようなページ遷移を行っているかを追跡し、ユーザーの行動やサイト内での移動パターンを把握することができます。これにより、ECサイト運営者はユーザーエクスペリエンスの改善やサイト構造の最適化を検討する際に役立てることができます。

今回の記事では、ウィンドウ関数(LAG/LEAD)を使って特定ユーザーのページ遷移をセッションごとに抽出するSQLクエリについて解説を行った。

LTVが高いユーザーやロイヤルカスタマーがサイト内でどのようなページ遷移をしているのかを把握したい時などに是非活用してほしい。

この記事の執筆者

Akifumi Watanabe

Webディレクター・上級Web解析士。 Google Analytics Certification保有。 GA4Queryの記事作成担当。 Web分析を活かした制作ディレクションを中心に行う。 元制作者の目線を活かしweb改善に取り組む。