【GA4×BigQuery】GSCによる対象のURLとクエリを一挙に抽出

導入(このSQLで解決できる課題)

検索流入を最適化するには「どの検索クエリで、どのURLがランディングページになっているか」を知ることが不可欠です。

Google Search Console(以下GSC)でもレポートは確認できますが、以下の課題があります。

  • GSCのUIでは日付やデバイス条件を細かく絞るのが手間

  • クエリ×URL単位での粒度が欲しいが、ダウンロードしてExcel処理するしかない

  • 複数サイトや期間を比較する場合に手作業が膨大

そこでこのSQLを使うと、BigQueryにエクスポートされたGSCデータから直接「モバイル検索流入の全体像」を抽出できます。

  • クエリ×URL単位での表示回数(Impressions)、クリック数(Clicks)、CTR、平均掲載順位を自動算出

  • クエリパラメータ除去や小文字化によりURLを正規化

  • 「匿名化された検索クエリ」も補足し、分析漏れを防止

これにより「どのページがモバイル検索で強いのか」「どのクエリがCTR改善余地を持っているか」を即座に把握できるようになります。SEO改善やコンテンツ最適化に直結する実務SQLです。

実行結果イメージ(抜粋)

👉 モバイル限定の検索パフォーマンスを、URL×クエリ粒度で俯瞰できる。
「CTRが低いクエリ」や「順位は良いのにクリックされていないURL」を簡単に発見可能。

背景・利用シーン

  • このSQLは以下のような実務に活用できます。

    • SEO記事の検索パフォーマンス評価
      記事ごとに「どのクエリから来ているか」を可視化でき、狙ったキーワードでの順位とCTRをセットで評価可能。

    • モバイル流入の特定
      モバイル限定の集計なので「スマホユーザーに刺さっているか」を明確にできる。

    • CTR改善余地の特定
      平均掲載順位が良いのにCTRが低い場合は、タイトルやディスクリプションの改善対象とわかる。

    • 匿名化クエリの把握
      (anonimized) として補足されるため、クエリ全体のトレンド分析に抜けが出ない。

抽出結果からできる議論(会話例)

SEO担当A: 「この記事、3位にいるのにCTRが5%しかないですね。」
分析担当B: 「meta descriptionを改善すればもっと流入増えそうです。」

SEO担当A: 「このLPはCTRが11%と高いです。」
分析担当B: 「広告コピーと一致しているのが効いてますね。類似キーワードも狙いましょう。」

分析担当B: 「匿名化クエリが2割以上の流入を占めてます。」
SEO担当A: 「カテゴリ単位での需要がありそうなので、包括的な記事を増やしましょう。」

SEO担当A: 「スマホ流入が多いけど、直帰率が高いページがありますね。」
分析担当B: 「モバイルUI改善の対象にすべきです。」

SEO担当B: 「平均掲載順位が7位以下のクエリは要改善です。」
SEO担当A: 「記事構成の見直しや内部リンク強化を検討しましょう。」

SQLコードと解説

WITH
params AS (
  SELECT
    -- 分析対象期間(例:7/25〜8/12)
    '2024-07-25' AS startDate,
    '2024-08-12' AS endDate
)
SELECT
  -- URLを正規化(クエリパラメータ除去+小文字化)
  REGEXP_EXTRACT(LOWER(url), r'^([^\?]+)') AS landing_page_location,

  -- 検索クエリ。NULLは匿名化して(anonimized)に
  IFNULL(query, '(anonimized)') AS query,

  -- 基本指標
  SUM(impressions) AS imp,                    -- 表示回数
  SUM(clicks) AS click,                       -- クリック数
  IF(SUM(impressions) > 0,
     SAFE_DIVIDE(SUM(clicks), SUM(impressions)),
     0) AS ctr,                               -- CTR(クリック率)
  ((SUM(sum_position) / SUM(impressions)) + 1.0) AS avg_position -- 平均掲載順位
FROM
  `***********.searchconsole.searchdata_url_impression`  -- ★対象のSearch Consoleエクスポートテーブル
WHERE
  data_date BETWEEN CAST((SELECT startDate FROM params) AS DATE)
                 AND CAST((SELECT endDate   FROM params) AS DATE)
  AND search_type = 'WEB'   -- Web検索のみ
  AND device = 'MOBILE'     -- モバイル限定
GROUP BY
  landing_page_location, query
ORDER BY
  landing_page_location, click DESC;

 

  • params: 分析期間を柔軟に指定できる仕組み

  • REGEXP_EXTRACT(LOWER(url), …): URL正規化(パラメータ削除+小文字化)

  • IFNULL(query, '(anonimized)'): GSCが匿名化する検索クエリを補完

  • ctr: clicks / impressions を安全に計算(ゼロ除算回避)

  • avg_position: GSCの「sum_position」を平均化して順位を算出

確認すべきポイント

    • 日付設定
      params 内の startDate / endDate を必ず対象期間に合わせること。

    • デバイス条件
      device = 'MOBILE' を PC/Tablet に切り替えれば他デバイス分析も可能。

    • URL正規化
      現状はクエリパラメータを除去しているが、REGEXP_REPLACE でドメイン削除まで行うとさらに集約しやすい。

    • 平均順位の解釈
      計算式 (sum_position / impressions) + 1.0 は順位のオフセット補正。1位が0.0扱いになる場合の補正なので注意。

まとめ(SQLの効果と使いどころ)

    • CTRが低いクエリは meta 改善対象

    • 平均順位が高いが流入が少ないクエリは流入強化候補

    • 匿名化クエリも漏れなく把握可能

      このSQLを使えば、モバイル検索におけるランディングURL×クエリごとの「表示回数・クリック数・CTR・平均順位」を一括で可視化できます。

      SEOの改善対象を定量的に特定し、モバイル検索に強いサイト設計に役立ちます。

おすすめの記事