Preparar los ejemplos
Necesitas una exportación de GA4 a BigQuery y permisos para consultar sus tablas. Sustituye mi-proyecto.analytics_123456789 por tu proyecto y dataset, y adapta las fechas a un periodo disponible. Los nombres e identificadores siguientes son ficticios.
Los ejemplos consultan tablas diarias events_YYYYMMDD, sin mezclarlas con events_intraday_…. Antes de ejecutar en tu cuenta, revisa la estimación de bytes procesados y configura límites de facturación si los necesitas. No se han ejecutado estas consultas contra tus datos.
user_pseudo_id cuenta identificadores observados, no personas verificadas. Puede haber valores nulos y diferencias con los informes por identidad, modelado, filtros y procesamiento.
1. Contar eventos y usuarios observados
Esta consulta agrupa las filas de eventos por nombre dentro de un periodo. El total de usuarios utiliza identificadores no nulos distintos presentes en cada grupo.
SELECT
event_name,
COUNT(*) AS eventos,
COUNT(DISTINCT user_pseudo_id) AS usuarios_observados
FROM `mi-proyecto.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250107'
GROUP BY event_name
ORDER BY eventos DESC;Úsala para detectar nombres inesperados o volúmenes que requieren revisión. Un incremento de eventos puede representar más actividad o una duplicación de etiquetas: la consulta muestra el patrón, pero no decide la causa.
2. Páginas vistas por URL
Se filtra page_view antes de contar. El parámetro page_location se extrae del array event_params sin multiplicar las filas del evento.
SELECT
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location'
LIMIT 1) AS pagina,
COUNT(*) AS paginas_vistas
FROM `mi-proyecto.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250107'
AND event_name = 'page_view'
GROUP BY pagina
ORDER BY paginas_vistas DESC;Una misma página puede aparecer separada por parámetros de URL. Decide si necesitas conservarlos o normalizar rutas según tu pregunta. No elimines parámetros que distinguen contenidos relevantes sin revisar primero su significado.
3. Evolución diaria de páginas y usuarios
Esta consulta permite observar tendencias diarias. event_date corresponde a la fecha del evento según la zona horaria de la propiedad en la exportación.
SELECT
PARSE_DATE('%Y%m%d', event_date) AS fecha,
COUNT(*) AS paginas_vistas,
COUNT(DISTINCT user_pseudo_id) AS usuarios_con_page_view
FROM `mi-proyecto.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250107'
AND event_name = 'page_view'
GROUP BY fecha
ORDER BY fecha;Los usuarios están limitados a quienes tienen page_view en cada día. No los etiquetes como «todos los usuarios de GA4» ni sumes los valores diarios para obtener usuarios únicos de la semana.
4. Actividad por hora y minuto
Se utiliza una zona horaria explícita. Sustituye Europe/Madrid si tu análisis utiliza otra. La consulta diferencia el volumen de eventos del número de identificadores observados.
SELECT
FORMAT_TIMESTAMP('%H:%M', TIMESTAMP_MICROS(event_timestamp),
'Europe/Madrid') AS hora_minuto,
COUNT(*) AS paginas_vistas,
COUNT(DISTINCT user_pseudo_id) AS usuarios_observados
FROM `mi-proyecto.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250107'
AND event_name = 'page_view'
GROUP BY hora_minuto
ORDER BY hora_minuto;Agrupa todos los días seleccionados por la misma hora y minuto. Si necesitas una serie temporal completa, incluye también la fecha. No elimines eventos repetidos mediante un GROUP BY previo y después llames «eventos» al número de combinaciones restantes.
5. Recorrido de un identificador concreto
Para estudiar un solo recorrido, es imprescindible filtrar el identificador. Configura el parámetro de consulta usuario de tipo STRING con el valor que quieras revisar en un contexto autorizado.
SELECT
TIMESTAMP_MICROS(event_timestamp) AS instante_utc,
event_name,
user_pseudo_id,
(SELECT value.int_value
FROM UNNEST(event_params)
WHERE key = 'ga_session_id'
LIMIT 1) AS ga_session_id,
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location'
LIMIT 1) AS pagina
FROM `mi-proyecto.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250101' AND '20250107'
AND user_pseudo_id = @usuario
ORDER BY event_timestamp, event_name;El recorrido queda limitado al identificador y periodo seleccionados. No representa necesariamente toda la actividad de una persona en otros navegadores. Si varios eventos comparten timestamp, este orden no demuestra por sí solo su secuencia causal exacta.
Cómo llevar estas consultas a un informe
Define el significado de cada columna antes de conectarla a un dashboard. Documenta periodo, zona horaria, filtros y tratamiento de nulos. Revisa el resultado con un caso pequeño conocido antes de ampliar la consulta.
Continúa con Client ID y User ID y usuarios y sesiones. Si necesitas modelos y consultas adaptados a tu negocio, consulta el servicio de BigQuery.
Vídeos del artículo original
Conservo los vídeos que acompañaban esta entrada. Algunos muestran interfaces o funciones de versiones anteriores; utiliza las indicaciones revisadas de esta guía para configurar las herramientas actuales.
Las 5 consultas imprescindibles de #GA4 en #GoogleBigQuery · YouTube
Fuentes y documentación
- Esquema de la exportación de GA4 a BigQuery
- Consultas básicas sobre eventos GA4
- Consultas sobre tablas comodín
- Consultas parametrizadas
Documentación revisada el 29 de septiembre de 2026. Los ejemplos ilustran el método; adapta las comprobaciones a tu proyecto.