Cómo usar el conjunto de datos de BigQuery de CrUX

Los datos sin procesar del informe de UX de Chrome (CrUX) están disponibles en BigQuery, una base de datos de Google Cloud. Para usar BigQuery, se requiere un proyecto de GCP y conocimientos básicos de SQL.

En esta guía, aprenderás a usar BigQuery para escribir consultas en el conjunto de datos de CrUX para extraer resultados útiles sobre el estado de las experiencias del usuario en la Web:

  • Comprender cómo están organizados los datos
  • Escribe una consulta básica para evaluar el rendimiento de un origen
  • Escribe una consulta avanzada para hacer un seguimiento del rendimiento a lo largo del tiempo

Organización de los datos

Para comenzar, observa una consulta básica:

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

Para ejecutar la consulta, ingrésala en el editor de consultas y presiona el botón "Ejecutar consulta":

Ingresa una consulta simple en el editor y presiona Ejecutar.

Esta consulta tiene dos partes:

  • SELECT COUNT(DISTINCT origin) significa consultar la cantidad de orígenes en la tabla. En términos generales, dos URLs forman parte del mismo origen si tienen el mismo esquema, el mismo host y el mismo puerto.

  • FROM chrome-ux-report.all.202206 especifica la dirección de la tabla de origen, que tiene tres partes:

    • El nombre del proyecto de Cloud chrome-ux-report en el que se organizan todos los datos de CrUX
    • El conjunto de datos all, que representa datos de todos los países
    • La tabla 202206, que indica el año y el mes de los datos en formato AAAAMM

También hay conjuntos de datos para cada país. Por ejemplo, chrome-ux-report.country_ca.202206 representa solo los datos de la experiencia del usuario que se originan en Canadá.

Dentro de cada conjunto de datos, hay tablas por todos los meses desde 201710. Las tablas nuevas del mes calendario anterior se publican periódicamente.

La estructura de las tablas de datos (también conocida como esquema) contiene lo siguiente:

  • El origen, por ejemplo, origin = 'https://www.example.com', que representa la distribución global de la experiencia del usuario de todas las páginas de ese sitio web
  • La velocidad de conexión en el momento de la carga de la página, por ejemplo, effective_connection_type.name = '4G'
  • El tipo de dispositivo (por ejemplo, form_factor.name = 'desktop')
  • Las métricas de UX
    • primera_pintura (FP)
    • first_contentful_Paint (FCP)
    • dom_content_charge (DCL)
    • onload (OL)
    • experimental.first_input_delay (FID)

Los datos de cada métrica se organizan como un array de objetos. En la notación JSON, first_contentful_paint.histogram.bin se vería similar a esto:

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

Cada intervalo contiene un tiempo de inicio y uno de finalización en milisegundos, y una densidad que representa el porcentaje de experiencias del usuario dentro de ese intervalo de tiempo. En otras palabras, el 12.34% de las experiencias de FCP para este origen hipotético, la velocidad de conexión y el tipo de dispositivo son inferiores a 100 ms. La suma de todas las densidades de discretización es del 100%.

Explora la estructura de las tablas en BigQuery.

Evalúa el rendimiento

Podemos usar nuestros conocimientos sobre el esquema de la tabla para escribir una consulta que extraiga estos datos de rendimiento.

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

Consulta el FCP de CrUX en BigQuery

El resultado es 0.01115, lo que significa que el 1.115% de las experiencias de los usuarios en este origen oscilan entre 0 y 100 ms en 4G y en un teléfono. Si queremos generalizar nuestra consulta a cualquier conexión y cualquier tipo de dispositivo, podemos omitirlos de la cláusula WHERE y usar la función de agregador SUM para sumar todas sus respectivas densidades de discretizaciones:

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

Suma el FCP de CrUX en BigQuery

El resultado es 0.05355, o 5.355% en todos los dispositivos y tipos de conexión. Podemos modificar un poco la consulta y sumar las densidades de todas las discretizaciones que se encuentren en el rango de FCP “rápido” de 0 a 1,000 ms:

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

Consulta un FCP rápido en BigQuery

Esto nos da 0.6977. En otras palabras, el 69.77% de las experiencias del usuario de FCP en web.dev se consideran "rápidas" según la definición del rango de FCP.

Haz un seguimiento del rendimiento

Ahora que hemos extraído los datos de rendimiento de un origen, podemos compararlos con los datos históricos disponibles en tablas anteriores. Para ello, podríamos reescribir la dirección de la tabla a un mes anterior, o podríamos usar la sintaxis de comodín para consultar todos los meses:

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

Consulta una serie temporal de FCP de CrUX en BigQuery

Aquí, vemos que el porcentaje de experiencias rápidas de FCP varía en unos pocos puntos porcentuales cada mes.

aaaamm fast_fcp
202206 69,77%
202205 70,71%
202204 69,04%
202203 69,82%
202202 67,75%
202201 58,96%
202112 41,69%
... ...

Con estas técnicas, puedes buscar el rendimiento de un origen, calcular el porcentaje de experiencias rápidas y registrarlo en el tiempo. Como siguiente paso, intenta consultar dos o más orígenes y comparar su rendimiento.

Preguntas frecuentes

Estas son algunas de las preguntas frecuentes sobre el conjunto de datos de CrUX BigQuery:

¿Cuándo debería usar BigQuery en lugar de otras herramientas?

Solo es necesario cuando no puedes obtener la misma información de otras herramientas, como CrUX Dashboard y PageSpeed Insights. Por ejemplo, BigQuery te permite dividir los datos de forma significativa y hasta unirlos a otros conjuntos de datos públicos como el archivo HTTP para hacer una minería de datos avanzada.

¿Existe alguna limitación en cuanto al uso de BigQuery?

Sí, la limitación más importante es que, de forma predeterminada, los usuarios solo pueden consultar 1 TB de datos por mes. Más allá de eso, se aplica la tarifa estándar de $5 por TB.

¿Dónde puedo obtener más información sobre BigQuery?

Consulta la documentación de BigQuery para obtener más información.