Crie clones de tabelas
Este documento descreve como copiar uma tabela para um clone de tabela através de uma declaração SQL CREATE TABLE CLONE, um comando bq cp ou uma chamada API jobs.insert. Este documento destina-se a utilizadores que estão familiarizados com os clones de tabelas.
Autorizações e funções
Esta secção descreve as autorizações da Identity and Access Management (IAM) de que precisa para criar um clone de uma tabela e as funções de IAM predefinidas que concedem essas autorizações.
Autorizações
Para criar um clone de uma tabela, precisa das seguintes autorizações:
| Autorização | Recurso |
|---|---|
Todas as seguintes opções:bigquery.tables.getbigquery.tables.getData |
A tabela da qual quer criar um clone. |
bigquery.tables.createbigquery.tables.updateData
|
O conjunto de dados que contém o clone da tabela. |
Funções
As funções predefinidas do BigQuery que fornecem as autorizações necessárias são as seguintes:
| Role | Recurso |
|---|---|
Qualquer uma das seguintes opções:bigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
A tabela da qual quer criar um clone. |
Qualquer uma das seguintes opções:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
O conjunto de dados que contém o clone da nova tabela. |
Crie um clone de tabela
Use o GoogleSQL, a ferramenta de linhas de comando bq ou a API BigQuery para criar um clone de tabela.
SQL
Para clonar uma tabela, use a declaração CREATE TABLE CLONE.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Clique em Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Substitua o seguinte:
PROJECTé o ID do projeto de destino. Este projeto tem de estar na mesma organização que o projeto que contém a tabela que está a clonar.DATASETé o nome do conjunto de dados de destino. Este conjunto de dados tem de estar na mesma região que o conjunto de dados que contém a tabela que está a clonar.CLONE_NAMEé o nome do clone da tabela que está a criar.
bq
Use um comando bq cp
com a flag --clone:
bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Substitua o seguinte:
PROJECTé o ID do projeto de destino. Este projeto tem de estar na mesma organização que o projeto que contém a tabela que está a clonar.DATASETé o nome do conjunto de dados de destino. Este conjunto de dados tem de estar na mesma região que o conjunto de dados que contém a tabela que está a clonar. Se o conjunto de dados não estiver na mesma região que o conjunto de dados que contém a tabela que está a clonar, é copiada uma tabela completa.CLONE_NAMEé o nome do clone da tabela que está a criar.
A flag --no_clobber é obrigatória.
Se estiver a criar um clone no mesmo projeto que a tabela base, pode ignorar a especificação de um projeto, conforme mostrado abaixo:
bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME
API
Chame o método jobs.insert com o campo operationType definido como CLONE:
| Parâmetro | Valor |
|---|---|
projectId |
O ID do projeto que executa a tarefa. |
| Corpo do pedido | { "configuration": { "copy": { "sourceTables": [ { "projectId": "myProject", "datasetId": "myDataset", "tableId": "myTable" } ], "destinationTable": { "projectId": "PROJECT", "datasetId": "DATASET", "tableId": "CLONE_NAME" }, "operationType": "CLONE", "writeDisposition": "WRITE_EMPTY", } } } |
Substitua o seguinte:
PROJECTé o ID do projeto de destino. Este projeto tem de estar na mesma organização que o projeto que contém a tabela que está a clonar.DATASETé o nome do conjunto de dados de destino. Este conjunto de dados tem de estar na mesma região que o conjunto de dados que contém a tabela que está a clonar. Se o conjunto de dados não estiver na mesma região que o conjunto de dados que contém a tabela que está a clonar, é copiada uma tabela completa.CLONE_NAMEé o nome do clone da tabela que está a criar.
Controlo de acesso
Quando cria um clone de tabela, o acesso ao clone de tabela é definido da seguinte forma:
- As políticas de acesso ao nível da linha são copiadas da tabela base para o clone da tabela.
- As políticas de acesso ao nível da coluna são copiadas da tabela base para o clone da tabela.
O acesso ao nível da tabela é determinado da seguinte forma:
- Se o clone da tabela substituir uma tabela existente, o acesso ao nível da tabela da tabela existente é mantido. As etiquetas não são copiadas da tabela base.
- Se o clone da tabela for um novo recurso, o acesso ao nível da tabela para o clone da tabela é determinado pelas políticas de acesso do conjunto de dados no qual o clone da tabela é criado. Além disso, as etiquetas são copiadas da tabela base para a tabela clonada.
O que se segue?
- Depois de criar um clone de uma tabela, pode usá-lo como usa as tabelas padrão. Para mais informações, consulte o artigo Faça a gestão de tabelas.