Crie instantâneos de tabelas
Este documento descreve como criar um instantâneo de uma tabela através da
Google Cloud consola, da declaração SQL CREATE SNAPSHOT TABLE
, do comando bq cp --snapshot
ou da API jobs.insert
. Este documento destina-se a utilizadores que estão familiarizados com os instantes de tabelas do BigQuery.
Autorizações e funções
Esta secção descreve as autorizações da Identity and Access Management (IAM) de que precisa para criar uma cópia instantânea da tabela e as funções de IAM predefinidas que concedem essas autorizações.
Autorizações
Para criar uma captura instantânea de uma tabela, precisa das seguintes autorizações:
Autorização | Recurso | Notes |
---|---|---|
Todas as seguintes opções:bigquery.tables.get bigquery.tables.getData bigquery.tables.createSnapshot bigquery.datasets.get bigquery.jobs.create
|
A tabela da qual quer criar uma imagem instantânea. | Uma vez que a validade do resumo elimina o resumo mais tarde, para criar um resumo com um prazo de validade, tem de ter a autorização bigquery.tables.deleteSnapshot . |
bigquery.tables.create bigquery.tables.updateData
|
O conjunto de dados que contém o instantâneo da tabela. |
Funções
As funções predefinidas do BigQuery que fornecem as autorizações necessárias são as seguintes:
Role | Recurso | Notes |
---|---|---|
Pelo menos um dos seguintes:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner E, pelo menos, um dos seguintes: bigquery.jobUser bigquery.studioUser bigquery.user bigquery.studioAdmin bigquery.admin
|
A tabela da qual quer criar uma imagem instantânea. | Só é possível usar bigquery.dataOwner , bigquery.admin e
bigquery.studioAdmin para criar um instantâneo com um
prazo de validade. |
Pelo menos um dos seguintes:bigquery.dataEditor bigquery.dataOwner bigquery.studioAdmin bigquery.admin
|
O conjunto de dados que contém o novo instantâneo da tabela. |
Limitações
Para ver informações sobre as limitações das capturas instantâneas de tabelas, consulte o artigo Limitações das capturas instantâneas de tabelas.
Além disso, a criação de instantâneos de tabelas está sujeita às seguintes limitações, que se aplicam a todas as tarefas de cópia de tabelas:
- Quando cria uma cópia instantânea de uma tabela, o respetivo nome tem de cumprir as mesmas regras de nomenclatura que quando cria uma tabela.
- A criação de instantâneos de tabelas está sujeita aos limites do BigQuery em tarefas de cópia.
- O conjunto de dados de instantâneo da tabela tem de estar na mesma região e na mesma organização que o conjunto de dados que contém a tabela da qual está a tirar um instantâneo. Por exemplo, não pode criar uma cópia instantânea de uma tabela num conjunto de dados sediado nos EUA de uma tabela localizada num conjunto de dados sediado na UE. Em alternativa, tem de fazer uma cópia da tabela.
- O tempo que o BigQuery demora a criar instantâneos de tabelas pode variar significativamente entre diferentes execuções, uma vez que o armazenamento subjacente é gerido dinamicamente.
- Quando cria um instantâneo de tabela através da CLI do BigQuery, o instantâneo tem a chave de encriptação predefinida do conjunto de dados de destino. Quando cria um instantâneo de uma tabela usando SQL, o instantâneo tem a mesma chave de encriptação que a tabela de origem.
Crie um instantâneo de tabela
A prática recomendada é criar um resumo da tabela num conjunto de dados diferente da tabela base. Esta prática permite restaurar a tabela base a partir da respetiva captura instantânea da tabela, mesmo que o conjunto de dados da tabela base seja eliminado acidentalmente.
Quando cria uma cópia instantânea de uma tabela, especifica a tabela da qual quer criar uma cópia instantânea e um nome exclusivo para a cópia instantânea da tabela. Opcionalmente, pode especificar a hora do instantâneo e a expiração do instantâneo da tabela.
Crie um instantâneo de tabela com uma data de validade
Pode criar um resumo de uma tabela que expira após 24 horas através de uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda os nós do projeto e do conjunto de dados da tabela que quer criar uma imagem instantânea.
Clique no nome da tabela da qual quer criar uma imagem instantânea.
No painel da tabela apresentado, clique em Snapshot.
No painel Criar instantâneo da tabela apresentado, introduza as informações de Projeto, Conjunto de dados e Tabela para o novo instantâneo da tabela.
No campo Hora de validade, introduza a data e a hora para 24 horas a partir de agora.
Clique em Guardar.
SQL
Use a
CREATE SNAPSHOT TABLE
declaração DDL:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME OPTIONS ( expiration_timestamp = TIMESTAMP 'TIMESTAMP_VALUE');
Substitua o seguinte:
SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.TIMESTAMP_VALUE
: um valor de data/hora que representa a data e a hora 24 horas a partir de agora.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Introduza o seguinte comando no Cloud Shell:
bq cp \ --snapshot \ --no_clobber \ --expiration=86400 \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Substitua o seguinte:
TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.
A flag --no_clobber
é obrigatória.
API
Chame o método jobs.insert
com os seguintes parâmetros:
Parâmetro | Valor |
---|---|
projectId |
O ID do projeto a faturar para esta operação. |
Corpo do pedido | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY", "destinationExpirationTime":"TIMESTAMP_VALUE" } } } |
Substitua o seguinte:
TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.TIMESTAMP_VALUE
: um valor de data/hora que representa a data e a hora 24 horas a partir de agora.
Tal como acontece com as tabelas, se não for especificada uma data de validade, a cópia instantânea da tabela expira após o tempo de validade predefinido da tabela ou do conjunto de dados que contém a cópia instantânea da tabela.
Crie um instantâneo de tabela com a viagem no tempo
Pode criar um resumo de uma tabela tal como estava há uma hora através de uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda os nós do projeto e do conjunto de dados da tabela que quer criar uma imagem instantânea.
Clique no nome da tabela da qual quer criar uma imagem instantânea.
No painel da tabela apresentado, clique em Snapshot.
No painel Criar instantâneo da tabela apresentado, introduza as informações de Projeto, Conjunto de dados e Tabela para o novo instantâneo da tabela.
No campo Hora da captura, introduza a data e a hora de há 1 hora.
Clique em Guardar.
SQL
Use a
CREATE SNAPSHOT TABLE
declaração DDL
com uma cláusula FOR SYSTEM_TIME AS OF
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Substitua o seguinte:
SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Introduza o seguinte comando no Cloud Shell:
bq cp \ --no_clobber \ --snapshot \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME@-3600000 \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Substitua o seguinte:
TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.
A flag --no_clobber
é obrigatória.
API
Chame o método
jobs.insert
com os seguintes parâmetros:
Parâmetro | Valor |
---|---|
projectId |
O ID do projeto a faturar para esta operação. |
Corpo do pedido | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME@-360000" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
Substitua o seguinte:
TABLE_PROJECT_ID
: o ID do projeto do projeto que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_DATASET_NAME
: o nome do conjunto de dados que contém a tabela a partir da qual está a criar a imagem instantânea.TABLE_NAME
: o nome da tabela a partir da qual está a criar o resumo.SNAPSHOT_PROJECT_ID
: o ID do projeto do projeto no qual criar a captura instantânea.SNAPSHOT_DATASET_NAME
: o nome do conjunto de dados no qual criar a imagem instantânea.SNAPSHOT_NAME
: o nome do instantâneo que está a criar.
Para mais informações sobre como especificar uma versão anterior de uma tabela, consulte o artigo Aceder a dados do histórico através da viagem no tempo.
Controlo de acesso a tabelas
Para controlar o acesso a tabelas no BigQuery, consulte o artigo Controle o acesso a recursos com a IAM.
Quando cria uma cópia instantânea de uma tabela, o acesso ao nível da tabela à cópia instantânea da tabela é definido da seguinte forma:
- Se a cópia instantânea da tabela substituir uma tabela existente, o acesso ao nível da tabela para a tabela existente é mantido. As etiquetas não são copiadas da tabela base.
- Se o instantâneo da tabela for um novo recurso, o acesso ao nível da tabela para o instantâneo da tabela é determinado pelas políticas de acesso do conjunto de dados no qual o instantâneo da tabela é criado. Além disso, as etiquetas são copiadas da tabela base para a tabela de instantâneo.
O que se segue?
- Atualize a descrição, a data de validade ou a política de acesso de uma imagem instantânea de tabela.
- Restaurar um instantâneo de uma tabela.
- Crie instantâneos mensais de uma tabela através de uma conta de serviço que execute uma consulta agendada.