GA4Query

お問い合わせ

ページ別訪問数を集計するSQLクエリ | GA4QUERY

公開日:2022年12月02日
更新日:2023年02月14日
【GA4+BigQuery】ページ別訪問数を集計するSQLクエリ

本記事では、BigQueryにエクスポートしたGA4データを用いてページ別訪問数を集計するSQLクエリに関して解説をおこなう。旧Googleアナリティクス(ユニバーサルアナリティクス)では標準レポート内の「行動 > サイトコンテンツ > すべてのページ」部分で提供されていたが、(執筆時点では)GA4の標準レポートからは姿を消しているため、BigQueryにエクスポートしたGA4データでSQLクエリを書いて集計をおこなう際にはぜひ参考にしてほしい。

SQLクエリ概要

ページ別訪問数とは、ページ別のセッション数のことであり、1セッション中に何度も同じページを閲覧しても、ページ別訪問数のカウントは1となることである。

今回は上記の定義に従い、各URL(パス)ごとにセッション数を集計する。

セッション数の集計方法に関する記事はこちらを参照されたい。

また、正規表現を使ってURLからパスを取り出す方法に関する記事はこちらを参照されたい。

最後に、event_params内のイベントパラメータを取り出す方法に関する記事はこちらを参照されたい。

SQLクエリサンプル

今回のSQLのサンプルクエリは、以下になる。

WITH prep1 AS (
  SELECT
    REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params)
      WHERE key = 'page_location'), '[?].+', '') AS page_url, -- URLからパラメータ部分を取り除く
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_title') AS page_title,
    CONCAT(user_pseudo_id, CAST((SELECT value.int_value FROM UNNEST(event_params)
      WHERE key = 'ga_session_id') AS string)) AS sid
  FROM
    `technogram-354804.analytics_291973511.events_intraday_202211*`
    WHERE _TABLE_SUFFIX BETWEEN '01' AND '20' -- 集計期間を11/1~11/20に設定
),

prep2 AS (
  SELECT
    REGEXP_REPLACE(page_url,'.+jp', '') AS url_path, -- URLからパス以外の部分を取り除く
    page_title, 
    sid
  FROM
    prep1
)

SELECT
  url_path,
  page_title,
  COUNT(DISTINCT sid) AS unique_page_view_count
FROM
  prep2
GROUP BY
  url_path,
  page_title
ORDER BY
  unique_page_view_count DESC
;

※上記のクエリを引用して使用する際は、 technogram-354804.analytics_291973511.events_intraday_202211* の部分をご自身のテーブル名に変更して使用してください。

集計結果(BigQuery+GA4)

以下がBigQueryとGA4での、上記クエリの集計結果である。

■ BigQueryでの集計結果

■ GA4探索画面での集計結果

BigQueryでの集計結果とGA4探索画面での集計結果が一致していることが確認できた。

この記事の執筆者

Akifumi Watanabe

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