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 queTIME
es la cantidad de milisegundos transcurridos desde la época UNIX.tableid@-TIME_OFFSET
en el queTIME_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?
- Obtén más información sobre las instantáneas de tablas.
- Obtén más información sobre la retención de datos con viaje en el tiempo y seguridad ante fallas.
- Obtén más información para administrar tablas.