Chrome 用户体验报告 (CrUX) 的原始数据可在 BigQuery(Google Cloud 上的数据库)中找到。使用 BigQuery 需要有 GCP 项目并具备 SQL 基础知识。
在本指南中,了解如何使用 BigQuery 针对 CrUX 数据集编写查询,以提取有关 Web 用户体验状态的富有洞察力的结果:
- 了解数据的组织方式
- 编写基本查询以评估源站的性能
- 编写高级查询以跟踪性能随时间变化的情况
数据组织
首先查看下面的基本查询:
SELECT COUNT(DISTINCT origin) FROM `chrome-ux-report.all.202206`
如需运行查询,请在查询编辑器中输入,然后按“运行查询”按钮:
此查询包含两部分:
SELECT COUNT(DISTINCT origin)
表示查询表中源站的数量。一般来说,如果两个网址的架构、主机和端口相同,它们就属于同一源。FROM chrome-ux-report.all.202206
指定源表的地址,该表包含三个部分:- Cloud 项目名称
chrome-ux-report
,其中整理了所有 CrUX 数据 - 数据集
all
,表示所有国家/地区的数据 202206
表,即数据的年份和月份,采用 YYYYMM 格式
- Cloud 项目名称
此外还有每个国家/地区的数据集。例如,chrome-ux-report.country_ca.202206
仅表示来自加拿大的用户体验数据。
每个数据集中自 2017 年起每月都有表。系统会定期发布上个日历月的新表。
数据表的结构(也称为架构)包含以下内容:
- 来源,例如
origin = 'https://www.example.com'
,它表示相应网站上所有网页的总体用户体验分布情况 - 网页加载时的连接速度,例如
effective_connection_type.name = '4G'
- 设备类型,例如
form_factor.name = 'desktop'
- 用户体验指标本身
<ph type="x-smartling-placeholder">
- </ph>
- first_paint (FP)
- first_contentful_paint (FCP)
- dom_content_loaded (DCL)
- 负载 (OL)
- experiment.first_input_delay (FID)
每个指标的数据均以对象数组的形式进行组织。采用 JSON 表示法时,first_contentful_paint.histogram.bin
如下所示:
[
{"start": 0, "end": 100, "density": 0.1234},
{"start": 100, "end": 200, "density": 0.0123},
...
]
每个分箱都包含开始时间和结束时间(以毫秒为单位),以及表示该时间范围内用户体验百分比的密度。换句话说,就这个假设的来源、连接速度和设备类型而言,12.34% 的 FCP 体验不到 100 毫秒。所有分箱密度的总和为 100%。
评估效果
我们可以利用对表架构的了解来编写用于提取这些性能数据的查询。
SELECT
fcp
FROM
`chrome-ux-report.all.202206`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
effective_connection_type.name = '4G' AND
form_factor.name = 'phone' AND
fcp.start = 0
结果为 0.01115
,这意味着此源上有 1.115% 的用户体验在 4G 和手机上 0 到 100 毫秒之间。如果要将查询泛化到任何连接和任何设备类型,我们可以从 WHERE
子句中省略这些查询,并使用 SUM
Aggregator 函数将其各自的所有分箱密度相加:
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
其测试结果为 0.05355
,在所有设备和连接类型中的占比为 5.355%。我们可以稍微修改查询,并将所有“快速”分箱的密度相加FCP 范围为 0–1000 毫秒:
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
这会生成 0.6977
。换句话说,web.dev 上 69.77% 的 FCP 用户体验被视为“快速”根据 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
在这里,我们可以看到,快速 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% |
… | … |
借助这些方法,您可以了解源站的性能,计算快速体验的百分比,并跟踪源站的运行情况。下一步,请尝试查询两个或多个源站并比较它们的效果。
常见问题解答
以下是有关 CrUX BigQuery 数据集的一些常见问题解答:
何时使用 BigQuery 而不是其他工具?
仅当您无法通过 CrUX 信息中心和 PageSpeed Insights 等其他工具获取同样的信息时,才需要使用 BigQuery。例如,BigQuery 可让您以有意义的方式将数据切片,甚至可以将数据与 HTTP Archive 等其他公共数据集联接以执行一些高级数据挖掘。
使用 BigQuery 是否有任何限制?
是的,最重要的限制是默认情况下用户每月只能查询 1TB 的数据。超出此限额后,适用 5 美元/TB 的标准费率。
在哪里可以详细了解 BigQuery?
如需了解详情,请参阅 BigQuery 文档。