BigQuery

【BigQuery×GA4】サイト内検索キーワードと検索数を出すSQLクエリ

【BigQuery×GA4】サイト内検索キーワードとその検索数を出すSQLクエリ BigQuery

本記事では、BigQueryにエクスポートしたGA4のデータから、サイト内検索が発生したページと検索キーワード、検索数を出すSQLクエリを紹介する。

サイト内検索のイベントについて

GA4では、ページの表示やスクロールなどユーザーがサイト内で起こす行動はすべて”イベント”として記録され、サイト内検索については「view_search_results」というイベントが記録される。

view_search_resultsは、ユーザーがサイト内検索を実行し、検索結果ページが表示された際に計測されるイベントだ。
ただし、計測されるのは拡張計測機能をONにしたうえで、検索結果のURLに含まれるクエリパラメータをGA4で事前設定している場合に限られる。クエリパラメータは、「q」「s」「search」「query」「keyword」の5つがデフォルトで登録されており、これらを使用しているサイトであれば追加の設定は不要だ。
それ以外のクエリパラメータを使用している場合は、拡張計測機能の設定画面から追加登録できる。

サイト内検索のクエリパラメータ設定
拡張計測機能をONにする方法

GA4管理画面>「データストリーム」>対象のストリームをクリック>拡張計測機能のトグルをONにする

どのページでどのようなキーワードが何回検索されたかを出すSQLクエリ

SQL
SELECT
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_referrer") AS search_occurrence_page,
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "search_term") AS search_term,
  COUNT(event_name) AS search_count
FROM `analytics_280494569.events_*` -- ご自身のプロジェクト名・データセット名に応じて変更する(`<project>.<dataset>.events_*`)
WHERE event_name = "view_search_results"
  AND _table_suffix BETWEEN "20240801" AND "20241130" -- ご自身で抽出したい期間に変更する
GROUP BY 1, 2
ORDER BY search_count DESC;

抽出しているデータは、サイト内検索の分析において最も基本的な情報である「どのページで」「どのようなキーワードが」「何回検索されたか」だ。
よってクエリ結果は下のようになる。

サイト内検索キーワード SQL クエリ結果

たとえば、/looker-studio/alternative-method-for-memo-function/のページで「メモ機能」というキーワードが1回検索されたという意味合いだ。

以下は、GA4のレポートで確認した画面だが、数値はきちんと合っている。

クエリ解説

WHERE句ではview_search_resultsイベントに絞り込みを行っているため、SELECT句で取り出しているいくつかのデータは、view_search_resultsイベントに紐づくイベントパラメータとなる。

(SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_referrer") AS search_occurrence_page,

上のクエリは、どのページでサイト内検索が発生したかを把握するために「page_referrer」というイベントパラメータを抽出している。

page_referrerは、page_locationの前のページを記録するイベントパラメータなのだが、前章でも触れたとおり、view_search_resultsイベントは検索結果ページが表示された段階で発生するため、どのページで検索が起こったかを知るためにはpage_referrerを参照する。
なお、page_locationは検索結果のURLを記録する。

view_search_resultsのデータ構造
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = "search_term") AS search_term,

上のクエリは、「search_term」というイベントパラメータを抽出している。search_termは検索されたキーワードを記録する。

COUNT(event_name) AS search_count

上のクエリは、サイト内検索の発生回数をカウントしている。WHERE句ではview_search_resultsイベントに絞り込んでいるため、COUNT(event_name)とすることで、このイベントの数をカウントできる。

おわりに

本記事では、BigQueryにエクスポートしたGA4のデータから、サイト内検索が発生したページ・検索キーワード・検索数を抽出するSQLクエリを紹介した。

「どのページでどのようなキーワードが何回検索されたか」を把握することで、コンテンツの拡充や導線設計、ナビゲーションの改善といったUX向上施策につなげることができる。

タイトルとURLをコピーしました