Acessar dados históricos
O BigQuery permite consultar e restaurar dados armazenados no BigQuery que foram alterados ou excluídos na janela de viagem no tempo.
Consultar dados em um momento específico
É possível consultar os dados históricos de uma tabela a qualquer momento na
janela de viagem no tempo usando uma
cláusula
FOR SYSTEM_TIME AS OF
. Essa cláusula usa uma expressão de carimbo de data/hora constante e faz referência à versão da tabela que estava sendo atualizada no carimbo de data/hora. A tabela precisa ser armazenada no BigQuery; não pode ser uma tabela externa. Não há
limite no tamanho da tabela quandoSYSTEM_TIME AS OF
é usado.
Por exemplo, a seguinte consulta retorna uma versão histórica de uma hora atrás:
SELECT *
FROM `mydataset.mytable`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Se o carimbo de data/hora especificar um horário anterior à janela de viagem no tempo ou antes da criação da tabela, a consulta falhará e retornará um erro como o seguinte:
Invalid snapshot time 1601168925462 for table myproject:mydataset.table1@1601168925462. Cannot read before 1601573410026.
Depois de substituir uma tabela atual usando a instrução CREATE OR REPLACE TABLE
, use FOR SYSTEM_TIME AS OF
para consultar a versão anterior da tabela.
Se a tabela foi excluída, a consulta falhará e retornará um erro como este:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Restaurar uma tabela de um momento
Para restaurar uma tabela de dados históricos, copie-os para uma tabela. A cópia de dados históricos funciona mesmo que a tabela tenha sido excluída ou tenha expirado, desde que você restaure a tabela dentro do período da janela de viagem no tempo.
Para copiar dados históricos de uma tabela, adicione um decorador ao nome dela usando uma das seguintes sintaxe:
tableid@TIME
em queTIME
é o número de milissegundos desde a época do Unix.tableid@-TIME_OFFSET
, em queTIME_OFFSET
é o deslocamento relativo do horário atual, em milissegundos.tableid@0
: especifica os dados históricos mais antigos disponíveis.
Por exemplo, o comando da ferramenta de linha de comando bq a seguir copia uma tabela chamada table1
de uma hora atrás para uma tabela chamada table1_restored
. A hora, -3600000
, é especificada em milissegundos usando um deslocamento relativo.
bq cp mydataset.table1@-3600000 mydataset.table1_restored
Execute o comando a seguir para mostrar o horário da época Unix equivalente para um horário especificado:
date -d '2023-08-04 16:00:34.456789Z' +%s000
O comando da ferramenta de linha de comando bq a seguir copia uma tabela chamada table1
para uma tabela chamada table1_restored
. Substitua o horário de época do UNIX 1691164834000
que você
recebeu do comando anterior.
bq cp mydataset.table1@1691164834000 mydataset.table1_restored
Para mais informações, consulte Restaurar tabelas excluídas.
A seguir
- Saiba mais sobre snapshots de tabela.
- Saiba mais sobre a retenção de dados com viagem no tempo e segurança contra falhas.
- Saiba mais sobre como gerenciar tabelas.