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.get bigquery.tables.getData |
A tabela que você quer fazer um clone. |
bigquery.tables.create bigquery.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.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
A tabela que você quer fazer um clone. |
Qualquer um dos seguintes:bigquery.dataEditor bigquery.dataOwner bigquery.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 do 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 -n 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.
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 -n 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.