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.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;
    

  3. 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:

Acesse o Cloud Shell

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.