Todos los días, cada vez: consultar events_* del export de GA4 sin filtrar _TABLE_SUFFIX
Sin filtro de _TABLE_SUFFIX, events_* lee todos los días exportados, y las tablas intradía si hay streaming. Facturas más altas y totales que no cuadran.
- Una consulta para el informe de octubre sobre el export de GA4, con el comodín events_*.
- Sin filtro de fecha, el comodín lee todas las tablas diarias exportadas: casi dos años en cada ejecución.
- Con el export streaming activo también entran las tablas intradía: datos parciales que aún cambian.
- La causa: events_* une cada tabla que empieza por events_. Nada en la consulta lo limita.
- La solución: filtrar _TABLE_SUFFIX con fechas fijas. Solo lee octubre y deja fuera las intradía.
- Compruébalo: la estimación baja de 1,8 TiB a 41 GiB y el total ya solo cuenta octubre.
El export de GA4 a BigQuery no escribe una única tabla grande. Crea una tabla por día, events_AAAAMMDD, dentro de un dataset llamado analytics_<id_de_propiedad>. Para consultar varios días a la vez se usa un comodín: FROM analytics_123.events_*. Es cómodo, y también la forma más fácil de leer muchos más datos de los que querías.
Cómo es una consulta sin filtro de fecha
Escribes la consulta del informe de octubre con events_* y olvidas el filtro de fecha, o lo pones en el sitio equivocado. Los síntomas:
- La estimación del editor es enorme para un informe mensual: Esta consulta procesará 1,8 TiB cuando octubre solo serían unas decenas de GiB.
- Los totales no cuadran con el informe de GA4 de octubre: incluyen todos los días exportados.
- Si el export streaming está activo, aparecen también las cifras de hoy, y cambian cada vez que ejecutas la consulta.
- El coste se repite en cada ejecución: una consulta programada o un dashboard paga todo el histórico cada vez.
Por qué events_* lo lee todo
Una tabla comodín es la unión de todas las tablas del dataset cuyo nombre empieza por el prefijo. Con events_* eso significa:
- Todas las tablas diarias exportadas desde que se creó la vinculación. En una propiedad vinculada hace casi dos años, cientos de tablas.
- Las tablas intradía, si el export streaming está activo. Se llaman
events_intraday_AAAAMMDD, que también empieza porevents_. Guardan los datos del día en curso según llegan, y Google borra cada una cuando la tabla diaria de ese día está completa. La guía de Google recomienda las tablas diarias cuando necesitas un conjunto de datos estable.
Lo que limita un comodín es un filtro sobre la pseudocolumna _TABLE_SUFFIX, la parte del nombre que sustituye el asterisco. Con valores fijos ('20261001', '20261028') BigQuery solo lee las tablas que coinciden y solo factura esas. Con una expresión que no es constante, como una subconsulta, no puede descartarlas de antemano y las lee todas. Ten en cuenta también que las tablas diarias pueden recibir eventos tardíos hasta tres días después de la fecha.
Cómo encontrar una consulta sin filtro de fecha
- Mira la estimación del editor antes de ejecutar. Si una consulta de un solo mes procesa tanto como el dataset entero, el filtro no está funcionando.
- Busca
events_*en tus consultas programadas, vistas y fuentes de datos de dashboards, y comprueba que todas tienen un filtro de_TABLE_SUFFIXcon valores fijos. - Busca filtros construidos con subconsultas o con
FORMAT_DATEsobre una columna de la tabla: no limitan las tablas leídas. - Si hay streaming, comprueba si la consulta puede coincidir con
events_intraday_*: conevents_*y sin filtro, coincide.
Cómo filtrar cada consulta por fecha
-
Añade siempre un filtro sobre el sufijo con fechas fijas:
SELECT event_name, COUNT(*) AS events FROM `analytics_123.events_*` WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261028' GROUP BY event_nameComo los sufijos intradía empiezan por
intraday_, este rango ya los deja fuera. -
Para fechas relativas también valen expresiones constantes, por ejemplo
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)). Lo que no funciona es leer la fecha de otra tabla. -
Si necesitas los datos de hoy, consulta
events_intraday_*a propósito y por separado, sabiendo que aún son parciales. -
En las consultas programadas, define también Máximo de bytes facturados: si el filtro se pierde en un cambio, la consulta falla en lugar de leer todo el histórico.
Documentación: esquema del export a BigQuery, configurar el export a BigQuery y consultar tablas comodín (en inglés).
Cómo comprobar que la consulta solo lee esos días
- La estimación baja al tamaño de los días que pides: en el ejemplo, de 1,8 TiB a 41 GiB.
- Los totales por día de la consulta coinciden con el informe de GA4 en días cerrados.
- Ejecutar la consulta dos veces seguidas da el mismo resultado: no entra ninguna tabla intradía.
El dataset, los tamaños y las fechas del ejemplo son ilustrativos.