Acessar dados históricos
Com o BigQuery, é possível 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 nova 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.
Ao restaurar uma tabela de dados históricos, as tags da tabela de origem não são copiadas para a tabela de destino. As informações de particionamento da tabela também não são copiadas para a tabela de destino. Para recriar o esquema de particionamento da tabela original, consulte a solicitação inicial de criação de tabela no Cloud Logging e use essas informações para particionar a tabela restaurada.
É possível restaurar uma tabela que foi excluída, mas ainda está dentro do período de viagem
copiando-a para uma nova tabela usando o decorador de tempo @<time>.
Não é possível consultar uma tabela excluída, mesmo que você use um decorador de tempo. Primeiro, restaure o dispositivo.
Use a seguinte sintaxe com o decorador de tempo @<time>:
tableid@TIMEem 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.
Para restaurar uma tabela, selecione uma das seguintes opções:
Console
Não é possível cancelar a exclusão de uma tabela usando o console do Google Cloud .
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para restaurar uma tabela, primeiro determine um carimbo de data/hora UNIX de quando ela existia (em milissegundos). É possível usar o comando
datedo Linux para gerar o carimbo de data/hora Unix a partir de um valor de carimbo de data/hora normal:date -d '2023-08-04 16:00:34.456789Z' +%s000
Em seguida, use o comando
bq copycom o decorador de viagem no tempo@<time>para executar a operação de cópia da tabela.Por exemplo, digite o seguinte comando para copiar a tabela
mydataset.mytableno momento1418864998000para uma nova tabelamydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
Opcional: forneça a sinalização
--locatione defina o valor do local.Também é possível especificar um deslocamento relativo. O exemplo a seguir copia a versão de uma tabela de uma hora atrás:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Go.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Node.js.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Se você antecipar que talvez queira restaurar uma tabela mais tarde diferente da permitida pelo período de viagem, crie um snapshot da tabela. Para mais informações, consulte Introdução aos snapshots da tabela.
Não é possível restaurar uma visualização lógica diretamente. Para mais informações, consulte Restaurar uma visualização.
A seguir
- Saiba mais sobre snapshots de tabela.
- Saiba mais sobre retenção de dados com viagem no tempo e segurança contra falhas.
- Saiba como gerenciar tabelas.