Criar clones de tabelas
Neste documento, descrevemos como copiar uma tabela para um
clone de tabela usando uma
instrução SQL
CREATE TABLE CLONE, um comando
bq cp ou uma chamada
de API jobs.insert. Este documento é destinado a usuários familiarizados com
clones de tabelas.
Permissões e papéis
Esta seção descreve os Permissões de gerenciamento de identidade e acesso (IAM) necessário criar um clone da tabela e papéis predefinidos do IAM que concedem essas permissões.
Permissões
Para criar um clone de tabela, você precisa das seguintes permissões:
| Permissão | Recurso |
|---|---|
Todas as opções a seguir:bigquery.tables.getbigquery.tables.getData |
A tabela que você quer fazer um clone. |
bigquery.tables.createbigquery.tables.updateData
|
O conjunto de dados que contém o clone da tabela. |
Papéis
Os papéis predefinidos do BigQuery que fornecem as permissões necessárias são os seguintes:
| Papel | Recurso |
|---|---|
Qualquer um dos seguintes:bigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
A tabela que você quer fazer um clone. |
Qualquer um dos seguintes:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
O conjunto de dados que contém o novo clone da tabela. |
Criar um clone da tabela
Use o GoogleSQL, a ferramenta de linha de comando bq ou a API BigQuery para criar um clone de tabela.
SQL
Para clonar uma tabela, use a instrução CREATE TABLE CLONE.
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, digite a seguinte instrução:
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Clique em Executar.
Para mais informações sobre como executar consultas, confira Executar uma consulta interativa.
Substitua:
PROJECTé o ID do projeto de destino. Esse projeto precisa estar na mesma organização do projeto que contém a tabela que você está clonando.DATASETé o nome do conjunto de dados de destino Esse conjunto de dados precisa estar na mesma região que o conjunto de dados que contém a tabela que você está clonando.CLONE_NAMEé o nome do clone da tabela que você está criando.
bq
Use um comando bq cp com a sinalização --clone:
bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Substitua:
PROJECTé o ID do projeto de destino. Esse projeto precisa estar na mesma organização do projeto que contém a tabela que você está clonando.DATASETé o nome do conjunto de dados de destino Esse conjunto de dados precisa estar na mesma região que o conjunto de dados que contém a tabela que você está clonando. Se o conjunto de dados não estiver na mesma região que o conjunto que contém a tabela que você está clonando, uma tabela completa será copiada.CLONE_NAMEé o nome do clone da tabela que você está criando.
A sinalização --no_clobber é obrigatória.
Se você estiver criando um clone no mesmo projeto da tabela base, poderá ignorar a especificação de um projeto, conforme mostrado a seguir:
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 o job. |
| Corpo da solicitação | { "configuration": { "copy": { "sourceTables": [ { "projectId": "myProject", "datasetId": "myDataset", "tableId": "myTable" } ], "destinationTable": { "projectId": "PROJECT", "datasetId": "DATASET", "tableId": "CLONE_NAME" }, "operationType": "CLONE", "writeDisposition": "WRITE_EMPTY", } } } |
Substitua:
PROJECTé o ID do projeto de destino. Esse projeto precisa estar na mesma organização do projeto que contém a tabela que você está clonando.DATASETé o nome do conjunto de dados de destino Esse conjunto de dados precisa estar na mesma região que o conjunto de dados que contém a tabela que você está clonando. Se o conjunto de dados não estiver na mesma região que o conjunto que contém a tabela que você está clonando, uma tabela completa será copiada.CLONE_NAMEé o nome do clone da tabela que você está criando.
Controle de acesso
Quando você cria um clone de tabela, o acesso a ele é definido da seguinte maneira:
- As políticas de acesso no nível da linha são copiadas da tabela base para o clone da tabela.
- As políticas de acesso no nível da coluna são copiadas da tabela base para o clone da tabela.
O acesso no nível da tabela é determinado da seguinte maneira:
- Se o clone da tabela substituir uma tabela atual, o acesso no nível da tabela atual será mantido. As Tags não são copiadas da tabela base.
- Se o clone da tabela for um novo recurso, o acesso no nível da tabela para o clone da tabela será determinado pelas políticas de acesso do conjunto de dados em que o clone da tabela foi criado. Além disso, as tags são copiadas da tabela base para o snapshot da tabela.
A seguir
- Depois de criar um clone de tabela, é possível usá-lo como tabelas padrão. Para mais informações, consulte Gerenciar tabelas.