Google アナリティクス 4 と BigQuery によるパフォーマンスの測定とデバッグ

ウェブに関する指標のデータを Google アナリティクス 4 プロパティに送信し、そのデータをエクスポートして BigQuery と Looker Studio で分析する方法について説明します。

Google は数多くのツールを提供しています。 コンソールPageSpeed Insights(PSI)、 Chrome ユーザー エクスペリエンス 報告 (CrUX)- デベロッパーがウェブ 現実のユーザーに関する指標を フィールド

これらのツールは、サイトの状況の概要を 使用を開始するための設定は一切不要です

ただし、こうした機能に依存しない大きな理由があります。 次のようなツールだけでサイトのパフォーマンスを測定できます。

  • CrUX ベースのツールでは、月別または過去 28 日間のデータを確認できます。 つまり 変更を行った後は しばらく待ってから 結果を確認できます
  • CrUX ベースのツールは、 国、接続タイプ、デバイス カテゴリ(デスクトップまたはモバイル)です。できないこと ビジネスに固有のディメンション(例: エンゲージ ユーザー、特定のテストグループのユーザーなど)が表示されます。
  • CrUX ベースのツールはパフォーマンスの程度を知ることはできますが、それを把握することはできません 回答します。分析ツールでは、追跡に役立つ追加データを送信できます。 問題のデバッグに役立ちます

こうした理由から、すべてのサイト所有者が Core Web Vitals の指標を確認することをおすすめしています。 既存の分析ツールを活用していますこの記事では、 ツールが用意されています

すべての設定が完了すると、次のようなダッシュボードを作成できるようになります。

Web Vitals コネクタ レポートのスクリーンショット

Web Vitals コネクタ レポートのスクリーンショット

ここで説明するすべての手順の概要を図で確認するには、Google I/O 2021 での講演をご覧ください。

測定

Google アナリティクスでは、 カスタム指標ですが Google アナリティクスに 4(GA4)です。 注目してください

Google アナリティクスのウェブ インターフェースには強力な分析ツールがありますが、 クエリを使用した未加工のイベントデータアクセスのパワーと柔軟性に勝るものはありません。 理解している必要があります

Google アナリティクス 4 と BigQuery を使った Core Web Vitals の測定を開始するには: 次の 3 つのことを行う必要があります。

  1. Google アナリティクス 4 を作成する プロパティBigQuery プロジェクト
  2. BigQuery Export を有効にします。 渡す必要があります。これにより、受信するすべてのデータが 自動的に BigQuery のプロジェクトテーブルに 入力されます
  3. web-vitals JavaScript を追加する できます。これにより、Core Web Vitals の指標と Google アナリティクスにデータを送信する 4アトリビューション データを含む。

分析

設定がすべて完了すると、BigQuery にイベントデータが入力されるのを確認できます。 次のようにしてデータをクエリできるはずです。

SELECT * FROM `my_project_id.analytics_XXXXX.events_*`
WHERE event_name IN ('LCP', 'INP', 'CLS')

以下は、このクエリの結果のプレビューです。

BigQuery の Web Vitals イベントデータ

Web Vitals データのクエリ

Web Vitals のイベントデータのクエリを開始する前に、 理解する必要があります。

理解しておくべき最も重要なことは、複数のイベントが 受信済み 同じページ上に表示されますこれは指標の値が変化している場合に 更新された値が報告されます(CLS でよく発生します)。

Web Vitals イベントでは、最後に送信される値が常に最も正確な値になるため、 それらの値だけをフィルタすることが重要です。 データの送信先となる web-vitals JavaScript ライブラリにより提供されているコード スニペット Google アナリティクス 4 では指標ごとに一意の ID が送信されるため、 次のクエリを実行して、各エントリで最後に受信した値のみに結果を制限 指標 ID:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)

なお、この投稿で紹介しているその他すべてのクエリは、 サブクエリを作成します。

クエリの例

以降のセクションでは、一般的な Web Vitals クエリの例をいくつか紹介します。 指定します。

サイト全体の 75% パーセンタイル(p75)の LCP、INP、CLS

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  metric_name,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS p75,
  COUNT(1) as count
FROM (
  SELECT
    metric_name,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
)
GROUP BY 1

個々の LCP の値が大きいものから低いものの順に

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
FROM web_vitals_events
WHERE metric_name = 'LCP'
ORDER BY metric_value DESC
# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS LCP,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'LCP'
)
GROUP BY 1
ORDER BY count DESC
LIMIT 10

CLS が悪い上位 10 ページ(p75)

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC
LIMIT 10

デバッグ

上記のクエリは、Web Vitals の指標データをクエリする方法を示しています。 現在のパフォーマンスと経時的な傾向を把握できますしかし、 パフォーマンスが予想より低い場合、どうすればよいかわからない場合はどうすればよいか 理由

自分のスコアが何であるかを知ることは、行動を起こせない場合に役立ちます。 問題を修正します。

フィールドでパフォーマンスをデバッグする」では、 アナリティクス データとともに追加のデバッグ情報を送信できます。もし そのブログ記事の手順に従っていると、 BigQuery にも表示されます。

クエリの例

次のクエリは、debug_target イベント パラメータを使用してこれを行う方法を示しています。 パフォーマンスの問題の根本原因を特定します。

CLS に影響する主な要素

debug_target は、画面上の要素に対応する CSS セレクタ文字列です。 指標の値に最も関連するページが表示されます。

CLS では、debug_target は最大の要素から最大の要素を表します。 CLS 値に影響を与えたレイアウト シフト。シフトされた要素がない場合、 debug_target の値は null になります。

次のクエリでは、75 日の CLS で最悪のものから最良のものの順にページをリストします。 パーセンタイル(debug_target でグループ化):

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  debug_target,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "debug_target") as debug_target,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
    *
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1, 2
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC

CLS に貢献している上位要素のクエリ結果

ページのどの要素がシフトしているかを知ることで、 問題の根本原因を特定して修正します。

ここで紹介する要素は、他の要素とは異なる場合があります。 ローカルでページをデバッグしていると ずれが生じます そもそもこのデータを取り込むことが重要です問題を修正するのは非常に難しい 気付かないうちは問題です

他の指標をデバッグする

前のクエリでは CLS 指標の結果が表示されていますが、 手法を使用して、LCP と INP のデバッグ ターゲットに関するレポートを作成できます。ジャスト Where 句を、デバッグする関連する指標に置き換えます。

WHERE metric_name = 'INP'
WHERE metric_name = 'LCP'

繰り返しますが、パフォーマンスのデバッグ( フィールドを参照し、 Core Web Vitals の各指標のデバッグ情報を送信する。

可視化

クエリ結果を見るだけで分析情報を得るのは難しい場合がある ありません。たとえば、次のクエリは、次の期間の日別 75 パーセンタイル値のリストを取得します。 データセット内の LCP。

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  event_date,
  metric_name,
  APPROX_QUANTILES(ROUND(metric_value, 2), 100)[OFFSET(75)] AS p75
FROM
  (
    SELECT
      event_date,
      metric_name,
      ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value'), 3) AS metric_value
    FROM web_vitals_events
    WHERE
      metric_name = 'LCP'
  )
GROUP BY
  1, 2
ORDER BY event_date

これらのクエリ結果から 1 対 1 の 確認しています。

日別の指標値のクエリ結果

そのような場合、データを可視化すると、分析情報をより迅速に引き出すことができます。

Looker Studio でクエリ結果を可視化する

BigQuery では、データを使用してクエリ結果を迅速に可視化できます。 できます。Looker Studio はデータの可視化 ダッシュボードツールですクエリ結果を可視化するには BigQuery UI でクエリを実行した後、[データを探索] ボタンをクリックし、 [Looker Studio で調べる] を選択します。

BigQuery で [Looker Studio] オプションを使用して探索

これにより、Explore 内で BigQuery から Looker Studio への直接リンクが作成されます。 表示されます。このビューでは、可視化するフィールドを選択し、 グラフの種類、フィルタの設定、アドホック グラフの作成を行って、すばやくビジュアル分析を行うことができます。 前のクエリ結果からこの折れ線グラフを作成すると、 LCP 値の推移:

Looker Studio の 1 日の LCP 値の折れ線グラフ

この BigQuery と Looker Studio の直接リンクにより、 ビジュアル分析もできます必要に応じて さらに詳しく分析する場合は、1 つのグラフで複数のグラフを より包括的なビューを表示したり ドリルダウンして 分析できます便利なダッシュボードがあれば、クエリを記述する必要がありません。 指標を分析するたびに手動でグラフを生成できます。

ダッシュボードは、ネイティブの BigQuery を使用して Looker Studio で作成できます。 コネクタをご覧ください。そのためには、 datastudio.google.com に移動して BigQuery コネクタを選択し、目的のデータセットを 以下を使用できます。

Looker Studio で BigQuery ネイティブ コネクタを使用する

Web Vitals データを実体化する

前述のとおり、Web Vitals のイベントデータのダッシュボードを作成する場合、 Google アナリティクス 4 のエクスポート データセットを直接使用するのは効率的ではありません。これは、 GA4 データの構造と、ウェブに関する主な指標に必要な前処理 指標があると、クエリの一部が複数回実行されることになります。これにより、 ダッシュボードのパフォーマンスと BigQuery の費用です。

BigQuery サンドボックスを 無料モードでご利用いただけます。BigQuery の 無料使用枠、 処理されるクエリデータは毎月 1 TB まで無料。分析方法: 使用する場合を除いて、かなり大きいデータセットまたは データセットに対するクエリが定期的に発生する場合、そのパフォーマンスは 毎月この無料枠が適用されますウェブサイトのトラフィックが多く、 高速なインタラクティブダッシュボードを使用して さまざまな指標を定期的にモニタリングし ウェブに関する主な指標データの前処理と実体化を、 パーティショニング、クラスタリング、キャッシュなどの BigQuery の効率化機能。

次のスクリプトは、BigQuery データ(ソーステーブル)を前処理し、 マテリアライズド テーブル(ターゲット テーブル)を作成する。このクエリを独自に使用する場合 ソーステーブルの日付範囲を定義して、 処理されるデータの量を減らします

# Materialize Web Vitals metrics from GA4 event export data

# Replace target table name
CREATE OR REPLACE TABLE bigquery_project_id.ga4_demo_dev.web_vitals_summary
  PARTITION BY DATE(event_timestamp)
  CLUSTER BY metric_name
AS
SELECT
  ga_session_id,
  IF(
    EXISTS(SELECT 1 FROM UNNEST(events) AS e WHERE e.event_name = 'first_visit'),
    'New user',
    'Returning user') AS user_type,
  IF(
    (SELECT MAX(session_engaged) FROM UNNEST(events)) > 0, 'Engaged', 'Not engaged')
    AS session_engagement,
  evt.* EXCEPT (session_engaged, event_name),
  event_name AS metric_name,
  FORMAT_TIMESTAMP('%Y%m%d', event_timestamp) AS event_date
FROM
  (
    SELECT
      ga_session_id,
      ARRAY_AGG(custom_event) AS events
    FROM
      (
        SELECT
          ga_session_id,
          STRUCT(
            country,
            device_category,
            device_os,
            traffic_medium,
            traffic_name,
            traffic_source,
            page_path,
            debug_target,
            event_timestamp,
            event_name,
            metric_id,
            IF(event_name = 'LCP', metric_value / 1000, metric_value) AS metric_value,
            user_pseudo_id,
            session_engaged,
            session_revenue) AS custom_event
        FROM
          (
            SELECT
              (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
                AS ga_session_id,
              (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
                AS metric_id,
              ANY_VALUE(device.category) AS device_category,
              ANY_VALUE(device.operating_system) AS device_os,
              ANY_VALUE(traffic_source.medium) AS traffic_medium,
              ANY_VALUE(traffic_source.name) AS traffic_name,
              ANY_VALUE(traffic_source.source) AS traffic_source,
              ANY_VALUE(
                REGEXP_SUBSTR(
                  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
                  r'^[^?]+')) AS page_path,
              ANY_VALUE(
                (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'debug_target'))
                AS debug_target,
              ANY_VALUE(user_pseudo_id) AS user_pseudo_id,
              ANY_VALUE(geo.country) AS country,
              ANY_VALUE(event_name) AS event_name,
              SUM(ecommerce.purchase_revenue) AS session_revenue,
              MAX(
                (
                  SELECT
                    COALESCE(
                      value.double_value, value.int_value, CAST(value.string_value AS NUMERIC))
                  FROM UNNEST(event_params)
                  WHERE key = 'session_engaged'
                )) AS session_engaged,
              TIMESTAMP_MICROS(MAX(event_timestamp)) AS event_timestamp,
              MAX(
                (
                  SELECT COALESCE(value.double_value, value.int_value)
                  FROM UNNEST(event_params)
                  WHERE key = 'metric_value'
                )) AS metric_value,
            FROM
              # Replace source table name
              `bigquery_project_id.analytics_XXXXX.events_*`
            WHERE
              event_name IN ('LCP', 'INP', 'CLS', 'first_visit', 'purchase')
            GROUP BY
              1, 2
          )
      )
    WHERE
      ga_session_id IS NOT NULL
    GROUP BY ga_session_id
  )
CROSS JOIN UNNEST(events) AS evt
WHERE evt.event_name NOT IN ('first_visit', 'purchase');

この実体化されたデータセットには、いくつかの利点があります。

  • データ構造がフラット化され、クエリが容易になります。
  • 元の GA4 データセットのウェブに関する指標イベントのみが保持されます。
  • セッション ID、ユーザータイプ(新規またはリピーター)、セッション エンゲージメント情報 列で直接使用できます。
  • テーブルは次のとおりです。 分割の基準 クラスタ化 指標名で識別されます。これにより、通常、各トランザクションに対して処理されるデータの量が なります。
  • このテーブルをクエリするためにワイルドカードを使用する必要はないため、クエリ結果は 最大 24 時間キャッシュに保存されます。これにより、同じインフラストラクチャを何度も なります。
  • BigQuery BI エンジンを使用する場合は、最適化された SQL 関数を実行し、 演算子 表します

このマテリアライズド テーブルは、BigQuery UI 内から直接クエリすることも、使用することもできます。 Looker Studio で BigQuery コネクタを インポートします

Web Vitals コネクタを使用する

ダッシュボードを一から作成するには時間がかかるため、 テンプレート ダッシュボードを作成します。まず、 前のクエリを使用して Web Vitals テーブルを実体化しました。次に、 Looker Studio 用のウェブに関する指標コネクタ(こちらのリンクを使用): goo.gle/web-vitals-connector

1 回限りの承認を行うと、次のように表示されます。 構成画面:

Web Vitals コネクタの承認画面

実体化された BigQuery テーブルの ID(ターゲット テーブル)と、 BigQuery 課金プロジェクト ID。[接続] をクリックすると、 ダッシュボードを作成し、データを関連付けます。編集、変更、 必要に応じてダッシュボードを共有できます。ダッシュボードを一度作成すると、 コネクタへのリンクにもう一度アクセスする必要があります。ただし、複数の 異なるデータセットから抽出できます。

ダッシュボードを操作すると、Web Vitals の日々の傾向が 指標や、ウェブサイトの使用状況に関する情報(ユーザーやセッションなど)が、 [SUMMARY] タブ。

[ユーザー分析] タブで指標を選択すると、その内訳 使用状況やビジネスごとの指標のパーセンタイルとユーザー数 できます。

[ページパスの分析] タブでは、 確認できますここで指標を選択して概要を確認できます。さらに、 すべてのページパスの散布図。Y 軸にパーセンタイル値があり、レコードが x 軸です。散布図は、掲載順位が下がったページの 表示されます散布図を使ってページを選択すると [ページパス] 表のグラフで、問題領域をさらに掘り下げて [Debug Target] テーブルを表示する

[収益分析] タブは、ビジネスをモニタリングする方法の一例 同じ場所で参照できますこのセクションには、 確認できます。収益とユーザー エクスペリエンスを比較できる クリックします。

高度な使用方法

データセットに慣れてきたら、ダッシュボードを編集して グラフ化して、ターゲットを絞って詳しく分析できます。ダッシュボードを 次の手順に沿って操作します。

  • 更新されたデータを取得するために、BigQuery でスケジュールされたクエリを設定する。実体化 クエリでは、その時点でのデータのスナップショットしか取得されません。もし 新しいデータでダッシュボードを常に最新の状態にするには、 使用してマテリアライズド テーブルを 分析できます
  • ファーストパーティ データ(CRM など)を結合してビジネス インサイトを得る。実体化された user_id を別の列として追加できます。これにより、 測定します自社データがまだ BigQuery に保存されていない場合は、 データを読み込むか 連携データを使用して 参照
  • Google に送信するデータのパラメータとしてサイトまたはアプリのバージョンを報告します マテリアライズド テーブルの列として追加できます。次に、 そのバージョンデータをディメンションとしてグラフに表示し、 バージョンの変更がパフォーマンスに影響します。
  • 直接接続によるデータセットの使用が著しく多いと予想される場合 有料バージョンの BigQuery BI をお試しいただけます。 Engine です。

概要

この投稿では、Google アナリティクス 4 と BigQuery を使用して、 現場で収集された実際のユーザーデータを使用してパフォーマンスを測定し、デバッグできます。これは、 Looker Studio を使用して自動レポートとダッシュボードを作成する方法も説明しました。 Web Vitals コネクタを使用して 可能な限り簡単にデータを可視化します。

この投稿からの重要なポイント:

  • 実際のユーザーデータでパフォーマンスを測定することは デバッグ、最適化を行います
  • パフォーマンス指標とビジネスの状態を把握すれば、 指標が同じシステム内にある場合ですGoogle アナリティクスと BigQuery が 考えています
  • Google アナリティクスの元データを BigQuery にエクスポートすることで、 なじみのあるクエリ言語を使用して、詳細なカスタム分析を行うことができます。
  • Google には Looker Studio などの 数多くの API や可視化ツールがあり 自由にレポートを作成できます 構築しました。