
Conectar BigQuery a Data Studio (antes Looker Studio) se hace en tres clics desde el conector nativo, pero hacerlo bien es otra cosa. Si apuntas Data Studio directamente a las tablas events_* de GA4, cada persona que abra el informe lanza una consulta que escanea meses de datos y te lo cobran. La forma correcta es materializar una tabla agregada con una consulta programada y conectar el informe a esa tabla pequeña.
Te cuento las tres formas de conectar, cuál elegir en cada caso y cómo montar el flujo completo sin que la factura se te dispare.
Las tres formas de conectar BigQuery con Data Studio
El conector nativo de BigQuery te da tres opciones, y la diferencia entre ellas es de dónde salen los datos y cuánto pagas cada vez.
1. Tabla o vista directa
Seleccionas proyecto, conjunto de datos y tabla. Data Studio lee el esquema y te deja usar los campos como dimensiones y métricas.
Es la opción más simple y la que menos control te da: Data Studio genera el SQL por ti, y cuando pones un filtro en el informe lo aplica después de traer los datos. Sirve para tablas pequeñas y ya agregadas. Para el export de GA4 en crudo, no.
2. Consulta personalizada
Escribes tú el SQL. Data Studio ejecuta esa consulta contra BigQuery y usa el resultado como fuente de datos.
Es la opción con más control y también la más peligrosa: cada refresco del informe reejecuta la consulta entera. Si tu SQL escanea 40 GB, pagas 40 GB cada vez que se refresque la caché.
3. Tabla materializada por consulta programada
Una consulta programada es una consulta que BigQuery ejecuta sola cada X tiempo y guarda el resultado en una tabla. Tú conectas Data Studio a esa tabla ya calculada.
Es la que deberías usar en el 90% de los casos. El coste de procesar el dato lo pagas una vez al día, no una vez por visita al informe. Y el informe vuela, porque consulta una tabla de megas en lugar de gigas.
El error que dispara la factura: consultar events_* en crudo
El export de GA4 a BigQuery crea una tabla por día: events_20260810, events_20260809, y así. Cuando escribes FROM `proyecto.analytics_123456.events_*` le estás diciendo a BigQuery que una todas.
Con dos años de histórico y un sitio con tráfico decente, eso son decenas de gigas por consulta. Y BigQuery cobra por dato escaneado, no por dato devuelto: un SELECT con LIMIT 10 sobre esa unión te cuesta exactamente lo mismo que uno sin límite.
La solución es filtrar por el sufijo de la tabla, que es lo único que BigQuery evalúa antes de leer datos:
WHERE _TABLE_SUFFIX BETWEEN '20260701' AND '20260731'
Ese filtro reduce el escaneo a las 31 tablas de julio. Un WHERE event_date = '20260715' no hace lo mismo: para evaluarlo, BigQuery ya ha tenido que leer la columna en todas las tablas.
Es la diferencia entre 40 GB y 1,5 GB en la misma consulta.
Paso a paso: montar el flujo completo
Este es el montaje que uso en producción. Da por hecho que ya tienes el export de GA4 a BigQuery funcionando.
- Escribe la consulta de agregación. No traigas eventos sueltos: agrega por las dimensiones que vayas a usar en el informe. Fecha, canal, página, dispositivo, y las métricas que necesites.
- Limita el rango a lo que se reprocesa. GA4 puede corregir datos de días anteriores, así que recalcula los últimos 3 días en cada ejecución, no solo el de ayer.
- Crea la tabla destino particionada. Particiona por la columna de fecha y agrupa (cluster) por la dimensión que más filtres. Así, cuando Data Studio pida «últimos 30 días», BigQuery lee solo esas particiones.
- Programa la consulta. En BigQuery, Consultas programadas → cada día a una hora en la que el export ya haya terminado. El export diario de GA4 suele estar disponible a media mañana.
- Conecta Data Studio a la tabla resultante, no a la consulta. Conector BigQuery → tu proyecto → la tabla agregada.
Un esqueleto de la consulta programada, con escritura incremental:
MERGE `proyecto.reporting.trafico_diario` T
USING (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS fecha,
traffic_source.medium AS medio,
device.category AS dispositivo,
COUNT(DISTINCT user_pseudo_id) AS usuarios,
COUNTIF(event_name = 'session_start') AS sesiones,
COUNTIF(event_name = 'purchase') AS compras
FROM `proyecto.analytics_123456.events_*`
WHERE _TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY 1, 2, 3
) S
ON T.fecha = S.fecha
AND T.medio = S.medio
AND T.dispositivo = S.dispositivo
WHEN MATCHED THEN UPDATE SET
usuarios = S.usuarios, sesiones = S.sesiones, compras = S.compras
WHEN NOT MATCHED THEN INSERT ROW;
El MERGE es lo que hace que los datos reprocesados por GA4 se actualicen en lugar de duplicarse. Si solo haces INSERT, a la semana tienes tres filas para el mismo día.
Parámetros: que el filtro llegue a BigQuery, no al informe
Si por lo que sea necesitas una consulta personalizada, usa los parámetros de rango de fechas de Data Studio. Son dos variables que el informe sustituye por las fechas que elija el usuario:
WHERE _TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', PARSE_DATE('%Y%m%d', @DS_START_DATE))
AND FORMAT_DATE('%Y%m%d', PARSE_DATE('%Y%m%d', @DS_END_DATE))
Para que funcionen tienes que marcar la casilla Habilitar parámetros de fecha al crear la fuente de datos.
La diferencia es grande. Sin parámetros, la consulta trae todo el histórico y Data Studio recorta al mostrar: pagas por todo. Con parámetros, el selector de fechas del informe se traduce en un filtro real de BigQuery: pagas por lo que se ve.
Caché: las tres capas que deciden lo que pagas
Entre tu informe y la factura hay tres cachés distintas, y conviene saber cuál está actuando.
La caché de Data Studio. Guarda los resultados de las consultas. En Recursos → Gestionar fuentes de datos configuras cada cuánto se refresca: de 15 minutos a 12 horas. Cuanto más largo, menos consultas. Para datos diarios, 12 horas sobra.
La caché de resultados de BigQuery. Si repites exactamente la misma consulta sobre datos que no han cambiado, BigQuery devuelve el resultado guardado y no cobra. Deja de aplicar en cuanto la consulta lleva algo no determinista, como CURRENT_DATE() sin materializar.
BI Engine. Es una capa de memoria de BigQuery pensada justo para esto. Reservas unos gigas, y las consultas de Data Studio que caben ahí se sirven desde memoria en menos de un segundo y sin coste de escaneo. Para un dashboard consultado a diario, una reserva pequeña se paga sola.
Cómo saber cuánto te cuesta cada informe
Antes de optimizar a ciegas, mide. BigQuery guarda el historial de todos los trabajos, así que puedes ver exactamente qué informe consume:
SELECT
user_email,
COUNT(*) AS consultas,
ROUND(SUM(total_bytes_billed)/POW(1024,4), 3) AS tb_facturados
FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND job_type = 'QUERY'
GROUP BY 1
ORDER BY tb_facturados DESC;
Las consultas que lanza Data Studio aparecen con la cuenta de servicio o el email del propietario de la fuente de datos. Si una sola fila se lleva la mitad de los terabytes, ya sabes por dónde empezar.
Añade también un límite de bytes facturados en las fuentes de datos personalizadas: si una consulta se pasa, falla en lugar de cobrarte.
Tres errores frecuentes y cómo salir de ellos
Problema: el informe tarda 30 segundos en cargar y a veces da error de tiempo de espera.
Solución: casi siempre es una consulta personalizada con JOIN sobre events_*. Pásala a consulta programada y conecta el informe a la tabla resultante.
Resultado: de 30 segundos a menos de 2, y el coste pasa de por visita a una vez al día.
Problema: los usuarios que abren el informe ven un error de permisos.
Solución: en la fuente de datos, cambia las credenciales de Visualizador a Propietario. Con credenciales de visualizador, cada persona necesita permisos sobre BigQuery.
Resultado: el informe se comparte como cualquier otro, pero ojo: con credenciales de propietario todo el mundo ve todos los datos de la tabla. Si necesitas segmentar por cliente, hazlo con filtros a nivel de fila en BigQuery.
Problema: los números no cuadran con la interfaz de GA4.
Solución: no van a cuadrar del todo nunca. GA4 aplica muestreo y modelado en su interfaz; BigQuery te da el dato en bruto sin modelar. Además, «usuarios» en GA4 no es COUNT(DISTINCT user_pseudo_id).
Resultado: decide cuál es tu fuente de verdad y documéntalo en tu plan de medición. Es el mismo tipo de desajuste que aparece entre plataformas publicitarias.
Preguntas frecuentes
¿Necesito saber SQL para conectar BigQuery a Data Studio?
Para conectar una tabla ya agregada, no: seleccionas la tabla y arrastras campos. Para trabajar con el export de GA4 sí, porque los datos vienen anidados en estructuras de eventos y parámetros que hay que desanidar con UNNEST antes de poder usarlos.
¿Cuánto cuesta tener un dashboard de GA4 sobre BigQuery?
Depende del volumen, pero con el flujo de tabla materializada, un sitio de tráfico medio se mueve en unos pocos euros al mes. El primer terabyte procesado cada mes es gratuito. Lo que dispara el gasto no es el volumen de datos, es consultar en crudo desde el informe.
¿Puedo mezclar datos de BigQuery con otras fuentes en el mismo informe?
Sí, con la combinación de datos de Data Studio, que hace un JOIN entre fuentes con una clave común. Si vas a cruzar mucho, sale más a cuenta hacer el cruce en BigQuery y servir una única tabla: la combinación en el informe es lenta y limita las funciones disponibles.
¿Cada cuánto llegan los datos de GA4 a BigQuery?
El export diario llega una vez al día, en una tabla por jornada. Si activas el export en streaming, tienes además una tabla events_intraday_ con los datos casi en tiempo real, pero con menos campos y sin atribución consolidada. Para informes, usa el export diario.
Conclusión
Conectar BigQuery a Data Studio es fácil; hacerlo sostenible es lo que separa un dashboard útil de una factura sorpresa. La regla es una: el trabajo pesado se hace una vez al día en una consulta programada, y el informe solo lee una tabla pequeña y particionada.
Si además filtras por _TABLE_SUFFIX, ajustas la caché y vigilas el consumo con INFORMATION_SCHEMA, tienes un sistema que aguanta crecer. Cuando quieras ir más allá del informe, las exploraciones de GA4 siguen siendo el sitio rápido para hipótesis sueltas, y BigQuery el sitio para responderlas en serio.
¿Tu informe va lento o te está inflando la factura de BigQuery? Escríbeme y lo vemos juntos.