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.get bigquery.tables.getData |
A tabela da qual quer criar um clone. |
bigquery.tables.create bigquery.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.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
A tabela da qual quer criar um clone. |
Qualquer uma das seguintes opções:bigquery.dataEditor bigquery.dataOwner bigquery.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.