BigQuery での CrUX

BigQuery での CrUX データの構造について学習します。

はじめに

Chrome UX レポート(CrUX)の元データは、Google Cloud Platform(GCP)でホストされている BigQuery のデータベースで入手できます。

BigQuery 上の CrUX では、トレンドの分析、ウェブ テクノロジーの比較、ベンチマーク ドメインの比較など、2017 年以降の完全なデータセットに直接クエリを実行できます。

データは月次リリースといくつかのサマリー テーブルで構成されており、データを簡単にクエリできるようになっています。詳細については後述します。

BigQuery データは CrUX ダッシュボードの基礎となるため、SQL クエリを記述せずにこのデータを可視化できます。

GCP でデータセットにアクセスする

BigQuery を使用するには、GCP プロジェクトと SQL の基本的な知識が必要です。BigQuery の CrUX データセットは、無料枠の上限まで無料でアクセスして探索できます。無料枠は毎月更新され、BigQuery から提供されます。また、GCP の新規ユーザーは、無料枠を超えた費用をカバーする登録クレジットの対象となる場合があります。GCP プロジェクトにはクレジット カードを用意する必要があります。詳しくは、クレジット カードを入力する必要があるのはなぜですか?をご覧ください。

BigQuery を初めて使用する場合は、次の手順でプロジェクトを設定します。

  1. Google Cloud Platform に移動します。
  2. [プロジェクトを作成] をクリックします。
  3. 新しいプロジェクトに「My Chrome UX Report」のような名前を付けて [作成] をクリックします。
  4. お支払い情報の入力を求められたら、お支払い情報を入力します。
  5. [BigQuery の CrUX データセット] に移動します。

これで、データセットに対してクエリを実行する準備が整いました。

プロジェクトの編成

BigQuery 上の CrUX データは、翌月の第 2 火曜日にリリースされます。毎月は、chrome-ux-report.all の新しいテーブルとしてリリースされます。月ごとの統計情報の概要を示すマテリアライズド テーブルも数多くあります。

詳細なテーブル スキーマ

元テーブル

各国の元テーブルと all データセットのスキーマは次のとおりです。

  • origin
  • effective_connection_type
  • form_factor
  • first_paint
  • first_contentful_paint
  • largest_contentful_paint
  • dom_content_loaded
  • onload
  • first_input
    • delay
  • layout_instability
    • cloudbuild_layout_shift
  • interaction_to_next_paint
  • experimental
    • permission
      • notifications
    • time_to_first_byte
    • popularity

マテリアライズド テーブルのスキーマ

マテリアライズド テーブルにより、多くの主要ディメンションによるサマリー データに簡単にアクセスできます。ヒストグラムは提供されず、パフォーマンス データはパフォーマンス評価と 75 パーセンタイル値によって小数に集計されます。metrics_summary テーブルから一連のサンプル行を例として以下に示します。

yyyymm 出所 fast_lcp avg_lcp slow_lcp p75_lcp
202204 https://example.com 0.9056 0.0635 0.0301 1600
202203 https://example.com 0.9209 0.052 0.0274 1,400
202202 https://example.com 0.9169 0.0545 0.0284 1500
202201 https://example.com 0.9072 0.0626 0.0298 1500

202204 年のデータセットでは、https://example.com の実際のユーザー エクスペリエンスの 90.56% が良好な LCP の基準を満たしており、75 パーセンタイルの粗い LCP 値は 1,600 ms であったことがわかります。前月よりも少し遅くなっています。

次の 4 つのマテリアライズド テーブルが用意されています。

metrics_summary
月別およびオリジン別の主要指標
device_summary
月、オリジン、デバイスタイプ別の主要指標
country_summary
月、オリジン、デバイスタイプ、国別の主要指標
origin_summary
データセットに含まれるすべてのオリジンのリスト

metrics_summary

metrics_summary テーブルには、各オリジンと各月次データセットの統計情報の概要が含まれています。

yyyymm
データ収集期間の月
origin
サイト元の URL
rank
大まかな人気ランキング(2021 年 3 月時点)
[small|medium|large]_cls
CLS しきい値別のトラフィックの割合
[fast|avg|slow]_<metric>
パフォーマンスしきい値別のトラフィックの割合
p75_<metric>
パフォーマンス指標の 75 パーセンタイル値(ミリ秒)
notification_permission_[accept|deny|ignore|dismiss]
通知権限の動作の割合
[desktop|phone|tablet]Density
トラフィックに占めるフォーム ファクタ別の割合
[_4G|_3G|_2G|slow2G|offline]Density
有効な接続タイプ別のトラフィックの割合

device_summary

device_summary テーブルには、月、オリジン、国、デバイス別に集計された統計情報が含まれています。metrics_summary 列以外にも、以下があります。

device
デバイスのフォーム ファクタ

country_summary

country_summary テーブルには、月、オリジン、国、デバイス別に集計された統計情報が含まれています。metrics_summary 列以外にも、以下があります。

country_code
2 文字の国コード
device
デバイスのフォーム ファクタ

origin_summary

origin_summary テーブルには、CrUX データセットに含まれるすべてのオリジンのリストが含まれています。このテーブルは、データセット内の最新のオリジンリストで毎月更新され、origin という列があります。

試験運用版データセット

試験運用版データセットのテーブルは、デフォルトの YYYYMM テーブルとまったく同じコピーですが、パーティショニングクラスタリングなどの新しい高度な BigQuery 機能を利用して、クエリをより迅速かつシンプルに低コストで記述できます。

country

experimental.country データセットには、country_CC データセットの集計データが含まれており、データセットの日付を表す yyyymm 列が追加されています。スキーマは生テーブルと同じですが、日付列と country_code 列が追加されています。これにより、月別のテーブルを結合することなく、国レベルの時系列比較クエリを実行できます。

global

experimental.global データセットには、all データセットの集計データが含まれ、データセットの日付を示す yyyymm 列が追加されています。スキーマは元テーブルと同じですが、日付が追加されているため、月別のテーブルを結合せずに時間の経過に伴うクエリを実行できます。