Cómo configurar el vencimiento de tablas en BigQuery

Índice

BigQuery es una herramienta poderosa, escalable y de bajo mantenimiento, pero a veces su automatización puede jugar en nuestra contra.

Uno de los riesgos menos visibles —pero más peligrosos— es el vencimiento automático de tablas, una configuración que puede llevarte a perder datos sin darte cuenta.

¿Qué es el vencimiento de tablas?

BigQuery permite establecer una duración ilimitada para las tablas, sin embargo podemos encontrarnos con el vencimiento predeterminado. Este puede estar configurado para que una tabla se elimine automáticamente después de cierto tiempo -normalmente 60 días-.

Aunque esta funcionalidad es útil para ahorrar espacio en entornos temporales, si se aplica por error a tablas críticas, los datos desaparecerán sin previo aviso ni posibilidad de recuperación.

bigquery

Recientemente, configuré un dataset en BigQuery para recibir la exportación diaria de datos desde Google Analytics 4 (GA4).

Como parte de una limpieza inicial, establecí un vencimiento automático de 60 días a nivel de dataset. Pensé que sería suficiente… hasta que empecé a notar algo extraño.

A pesar de haber eliminado el vencimiento a posteriori, las tablas diarias seguían desapareciendo pasados 60 días. ¿Por qué?

BigQuery hereda el vencimiento desde el dataset en el momento exacto en que se crea la tabla. Es decir, aunque cambies el vencimiento por defecto hoy, las tablas que ya han sido creadas siguen con la configuración antigua.

En mi caso, todas las tablas de exportación diaria de GA4 generadas antes del cambio conservaban el vencimiento original de 60 días.

Resultado: una pérdida continua de datos pasados esos 60 días.

Existen varias maneras de setear el vencimiento de las tablas en nuestro proyecto de BigQuery. Pero primero corrijamos el error y actualicemos el vencimiento predeterminado en BigQuery

Cómo comprobar si tus tablas tienen vencimiento

Lo primero de todo es hacer un check para ver los vencimientos de nuestras tablas

Puedes ejecutar esta consulta para ver si alguna tabla tiene fecha de vencimiento:

Resultado: 

Actualizar el vencimiento predeterminado de dataset en BigQuery

Puedes cambiar la fecha de vencimiento predeterminada de las tablas en un dataset usando:

  • La consola de Google Cloud
  • El comando bq update en la línea de comandos
  • La API (datasets.patch)
  • SQL. Escogeremos esta para hacerlo más didáctico.

Actualizando el vencimiento con SQL

Con el siguiente código, ajustaremos el vencimiento a nivel dataset:

Se ajustará el vencimiento:

Como lo que queremos es que no expire nunca, deberemos poner null en la consulta con lo que obtendremos el siguiente resultado:

El vencimiento se puede establecer a nivel de dataset (para todas las tablas nuevas) o individualmente al crear una tabla (lo que anula el predeterminado). Si no se establece vencimiento, la tabla no expirará y deberá borrarse manualmente.

Aspectos a tener en cuenta

  • Cambiar el vencimiento predeterminado en un dataset no afecta las tablas ya existentes; estas conservan su configuración original.
  • La nueva configuración solo se aplica a tablas creadas después del cambio, salvo que se especifique otro vencimiento al crearlas.
  • El formato del vencimiento varía según la herramienta: en consola se expresa en días, en línea de comandos en segundos y en la API en milisegundos.

Solución: modificar el vencimiento de las tablas

Para actualizar el vencimiento, ligero cambio: en lugar de SCHEMA, pondremos TABLE:

Y indicaremos null en expiration_timestamp:

Y tendremos el vencimiento actualizado:

Ejemplo inverso: declarando el vencimiento de una tabla

En nuestro caso no aplica, pero os dejo un ejemplo del timestamp para el 3 de febrero de 2027. Solamente tendremos que cambiar null por la fecha en la que queremos que se elimine:

El vencimiento automático de tablas en BigQuery es una funcionalidad útil pero peligrosa si se aplica sin entender su alcance.

No basta con cambiar el vencimiento por defecto a nivel de dataset: las tablas ya creadas mantienen su configuración original, y podrías seguir perdiendo datos sin darte cuenta.

Este tipo de detalles —silenciosos, pero letales— son los que iremos viendo en esta serie de artículos.

Suscríbete a la newsletter

Y recibe un resumen mensual de todos los artículos publicados

Otros artículos

La exportación de GA4 hacia BigQuery de Google Cloud tiene muchísimas ventajas, sin embargo, tenemos un límite de eventos diarios que poder exportar por propiedad: Para las propiedades de GA4

Hoy vamos a ver cómo personalizar el banner de cookies de Cookiebot aunque estemos en el plan gratuito. En mi caso, el script de Cookiebot lo tengo instalado desde Google

Si usas Google Tag Manager Server-Side para mejorar el control y la privacidad en tu tracking, una de las mejores prácticas para profesionalizar y asegurar tu implementación es configurar un dominio