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 que TIME é o número de milissegundos desde a época do Unix.
  • tableid@-TIME_OFFSET, em que TIME_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