Accede a los datos históricos

BigQuery te permite consultar y restablecer los datos almacenados en BigQuery que se modificaron o borraron dentro de tu ventana de viaje en el tiempo.

Consulta datos de momentos determinados

Puedes consultar los datos históricos de una tabla desde cualquier momento dentro del período de viaje con una cláusula FOR SYSTEM_TIME AS OF. Esta cláusula usa una expresión de marca de tiempo constante y hace referencia a la versión de la tabla que era la más reciente en esa marca de tiempo. La tabla debe estar almacenada en BigQuery, no puede ser una tabla externa. No existe un límite para el tamaño de la tabla cuando se usa SYSTEM_TIME AS OF.

Por ejemplo, la siguiente consulta muestra una versión histórica de la tabla de una hora antes:

SELECT *
FROM `mydataset.mytable`
  FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);

Si la marca de tiempo especifica un período anterior al período de viaje o antes de que se cree la tabla, la consulta fallará y mostrará un error como el siguiente:

Invalid snapshot time 1601168925462 for table
myproject:mydataset.table1@1601168925462. Cannot read before 1601573410026.

Después de reemplazar una tabla existente con la sentencia CREATE OR REPLACE TABLE, puedes usar FOR SYSTEM_TIME AS OF para consultar la versión anterior de la tabla.

Si se borró la tabla, falla la consulta y muestra un error como el siguiente:

Not found: Table myproject:mydataset.table was not found in location LOCATION

Restablece la versión de una tabla de un momento determinado

Para restablecer una tabla desde los datos históricos, puedes copiar los datos históricos en una tabla. La copia de datos históricos funciona incluso si la tabla se borró o caducó, siempre que restablezcas la tabla dentro de la duración del período de viaje.

Para copiar datos históricos de una tabla, agrega un decorador al nombre de la tabla con una de las siguientes sintaxis:

  • tableid@TIME en el que TIME es la cantidad de milisegundos transcurridos desde la época UNIX.
  • tableid@-TIME_OFFSET en el que TIME_OFFSET es la compensación relativa desde la hora actual, en milisegundos.
  • tableid@0: Especifica los datos históricos más antiguos disponibles.

Por ejemplo, con el siguiente comando de la herramienta de línea de comandos de bq, se copia una tabla llamada table1 de hace una hora y se pega en una tabla llamada table1_restored. El tiempo, -3600000, se especifica en milisegundos usando una compensación relativa.

bq cp mydataset.table1@-3600000 mydataset.table1_restored

Ejecuta el siguiente comando para obtener el tiempo Unix equivalente para una hora que especifiques:

  date -d '2023-08-04 16:00:34.456789Z' +%s000
  

Con el siguiente comando de la herramienta de línea de comandos de bq, se copia una tabla llamada table1 y se pega en una tabla llamada table1_restored. Reemplaza el tiempo Unix 1691164834000 que recibiste del comando anterior.

bq cp mydataset.table1@1691164834000 mydataset.table1_restored

Para obtener más información, consulta Restablece tablas borradas.

¿Qué sigue?