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.

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

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

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

Aceda ao Cloud Shell

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.