CrUX BigQuery データセットの使用方法

Chrome UX レポート(CrUX)の生データは、Google Cloud のデータベースである BigQuery で入手できます。BigQuery を使用するには、GCP プロジェクトと SQL の基本的な知識が必要です。

このガイドでは、BigQuery を使用して CrUX データセットに対してクエリを作成し、ウェブ上のユーザー エクスペリエンスの状態に関する分析情報を抽出する方法について説明します。

  • データの構成を理解する
  • オリジンのパフォーマンスを評価する基本的なクエリを作成する
  • 時間の経過に伴うパフォーマンスをトラッキングする高度なクエリを作成する

データ編成

まず、基本的なクエリを見てみましょう。

SELECT COUNT(DISTINCT origin) FROM `chrome-ux-report.all.202206`

クエリを実行するには、クエリ エディタに入力して [クエリを実行] ボタンを押します。

エディタに簡単なクエリを入力し、[実行] を押します。

このクエリには 2 つの部分があります。

  • SELECT COUNT(DISTINCT origin) は、テーブル内のオリジンの数をクエリすることを意味します。大まかに言うと、2 つの URL のスキーム、ホスト、ポートが同じ場合、それらは同じオリジンの一部です。

  • FROM chrome-ux-report.all.202206 は、ソーステーブルのアドレスを指定します。このアドレスは 3 つの部分で構成されています。

    • すべての CrUX データが整理されているクラウド プロジェクト名 chrome-ux-report
    • すべての国のデータを表すデータセット all
    • テーブル 202206。YYYYMM 形式のデータの年と月

国ごとのデータセットもあります。たとえば、chrome-ux-report.country_ca.202206 は、カナダ発のユーザー エクスペリエンス データのみを表します。

各データセット内には、201710 以降のすべての月のテーブルがあります。前月の新しいテーブルが定期的に公開されます。

データテーブルの構造(スキーマとも呼ばれます)には、次のものが含まれます。

  • オリジン(origin = 'https://www.example.com' など)。これは、そのウェブサイトのすべてのページのユーザー エクスペリエンスの分布の集計を表します。
  • ページ読み込み時の接続速度(effective_connection_type.name = '4G' など)(2025 年 2 月に削除
  • デバイスタイプ(form_factor.name = 'desktop' など)
  • UX 指標自体
    • first_paint(FP)
    • first_contentful_paintFCP
    • largest_contentful_paintLCP
    • dom_content_loaded(DCL)
    • onload(OL)
    • layout_instability.cumulative_layout_shiftCLS
    • interaction_to_next_paintINP

各指標のデータは、オブジェクトの配列として整理されます。JSON 表記では、first_contentful_paint.histogram.bin は次のようになります。

[
    {"start": 0, "end": 100, "density": 0.1234},
    {"start": 100, "end": 200, "density": 0.0123},
    ...
]

各ビンには、開始時刻と終了時刻(ミリ秒単位)と、その時間範囲内のユーザー エクスペリエンスの割合を表す密度が含まれています。つまり、この仮想オリジン、接続速度、デバイスタイプの FCP エクスペリエンスの 12.34% は 100 ミリ秒未満です。すべてのビンの密度の合計は 100% です。

BigQuery でテーブルの構造を確認します。

パフォーマンスを評価

テーブル スキーマの知識を使用して、このパフォーマンス データを抽出するクエリを作成できます。

SELECT
  fcp
FROM
  `chrome-ux-report.all.202502`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  form_factor.name = 'phone' AND
  fcp.start = 0

BigQuery で CrUX の FCP をクエリする

結果は 0.01115 です。これは、このオリジンのユーザー エクスペリエンスの 1.115% が、4G とスマートフォンで 0 ~ 100 ミリ秒であることを意味します。クエリを任意の接続と任意のデバイスタイプに一般化する場合は、WHERE 句からそれらを省略し、SUM 集計関数を使用して、それぞれのビンの密度を合計します。

SELECT
  SUM(fcp.density)
FROM
  `chrome-ux-report.all.202206`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start = 0

BigQuery で CrUX の FCP を合計する

結果は 0.05355、つまりすべてのデバイスと接続タイプで 5.355% です。クエリを少し変更して、0 ~ 1,000 ミリ秒の「高速」FCP 範囲にあるすべてのビンの密度を合計できます。

SELECT
  SUM(fcp.density) AS fast_fcp
FROM
  `chrome-ux-report.all.202206`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start < 1000

BigQuery で高速 FCP をクエリする

これにより 0.6977 が得られます。つまり、web.dev の FCP ユーザー エクスペリエンスの 69.77% は、FCP 範囲の定義に従って「高速」と見なされます。

パフォーマンスのトラッキング

オリジンのパフォーマンス データを抽出したので、古いテーブルで利用可能な過去のデータと比較できます。これを行うには、テーブル アドレスを以前の月に書き換えるか、ワイルドカード構文を使用してすべての月をクエリします。

SELECT
  _TABLE_SUFFIX AS yyyymm,
  SUM(fcp.density) AS fast_fcp
FROM
  `chrome-ux-report.all.*`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start < 1000
GROUP BY
  yyyymm
ORDER BY
  yyyymm DESC

BigQuery で CrUX FCP の時系列をクエリする

ここでは、高速 FCP エクスペリエンスの割合が毎月数パーセント ポイント変動していることがわかります。

yyyymm fast_fcp
202206 69.77%
202205 70.71%
202204 69.04%
202203 69.82%
202202 67.75%
202201 58.96%
202112 41.69%
... ...

これらの手法を使用すると、オリジンのパフォーマンスを調べ、高速エクスペリエンスの割合を計算して、時間の経過に伴う変化をトラッキングできます。次のステップとして、2 つ以上のオリジンをクエリして、それらのパフォーマンスを比較してみてください。

よくある質問

CrUX BigQuery データセットについてよく寄せられる質問をいくつかご紹介します。

他のツールではなく BigQuery を使用するのはどのような場合ですか?

BigQuery は、CrUX Vis や PageSpeed Insights などの他のツールから同じ情報を取得できない場合にのみ必要です。たとえば、BigQuery を使用すると、データを意味のある方法でスライスしたり、HTTP Archive などの他の一般公開データセットと結合して、高度なデータ マイニングを行うことができます。

BigQuery の使用には制限がありますか?

はい。最も重要な制限は、デフォルトではユーザーが 1 か月あたり 1 TB のデータしかクエリできないことです。これを超えると、標準料金の 5 ドル/TB が適用されます。

BigQuery について詳しく知りたい場合はどうすればよいですか?

詳細については、BigQuery のドキュメントをご覧ください。