Creare cloni di tabelle

Questo documento descrive come copiare una tabella in una copia della tabella utilizzando un CREATE TABLE CLONE istruzione SQL, un comando bq cp o una chiamata API jobs.insert. Questo documento è rivolto agli utenti che hanno dimestichezza con i cloni di tabelle.

Autorizzazioni e ruoli

Questa sezione descrive le autorizzazioni di Identity and Access Management (IAM) di cui hai bisogno per creare una copia di una tabella e i ruoli IAM predefiniti che concedono queste autorizzazioni.

Autorizzazioni

Per creare una copia di una tabella, devi disporre delle seguenti autorizzazioni:

Autorizzazione Risorsa
Tutti i seguenti:

bigquery.tables.get
bigquery.tables.getData
La tabella di cui vuoi creare un clone.
bigquery.tables.create
bigquery.tables.updateData
Il set di dati che contiene il clone della tabella.

Ruoli

I ruoli BigQuery predefiniti che forniscono le autorizzazioni richieste sono i seguenti:

Role Risorsa
Uno dei seguenti:

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
La tabella di cui vuoi creare un clone.
Uno dei seguenti:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Il set di dati che contiene il clone della nuova tabella.

Creare un clone di una tabella

Utilizza GoogleSQL, lo strumento a riga di comando bq o l'API BigQuery per creare un clone di una tabella.

SQL

Per clonare una tabella, utilizza l'istruzione CREATE TABLE CLONE.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

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

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.

Sostituisci quanto segue:

  • PROJECT è l'ID del progetto di destinazione. Questo progetto deve trovarsi nella stessa organizzazione del progetto contenente la tabella che stai clonando.
  • DATASET è il nome del set di dati di destinazione. Questo set di dati deve trovarsi nella stessa regione del set di dati contenente la tabella che stai clonando.
  • CLONE_NAME è il nome del clone della tabella che stai creando.

bq

Utilizza un comando bq cp con il flag --clone:

Vai a Cloud Shell

bq cp --clone -n project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME

Sostituisci quanto segue:

  • PROJECT è l'ID del progetto di destinazione. Questo progetto deve trovarsi nella stessa organizzazione del progetto contenente la tabella che stai clonando.
  • DATASET è il nome del set di dati di destinazione. Questo set di dati deve trovarsi nella stessa regione del set di dati contenente la tabella che stai clonando. Se il set di dati non si trova nella stessa regione del set di dati contenente la tabella che stai clonando, viene copiata una tabella completa.
  • CLONE_NAME è il nome del clone della tabella che stai creando.

Se stai creando un clone nello stesso progetto della tabella di base, puoi saltare la specifica di un progetto, come mostrato di seguito:

bq cp --clone -n myDataset.myTable DATASET.CLONE_NAME

API

Chiama il metodo jobs.insert con il operationType impostato su CLONE:

Parametro Valore
projectId L'ID del progetto che esegue il job.
Corpo della richiesta
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "myDataset",
          "tableId": "myTable"
        }
      ],
      "destinationTable": {
        "projectId": "PROJECT",
        "datasetId": "DATASET",
        "tableId": "CLONE_NAME"
      },
      "operationType": "CLONE",
      "writeDisposition": "WRITE_EMPTY",
    }
  }
}

Sostituisci quanto segue:

  • PROJECT è l'ID del progetto di destinazione. Questo progetto deve trovarsi nella stessa organizzazione del progetto contenente la tabella che stai clonando.
  • DATASET è il nome del set di dati di destinazione. Questo set di dati deve trovarsi nella stessa regione del set di dati contenente la tabella che stai clonando. Se il set di dati non si trova nella stessa regione del set di dati contenente la tabella che stai clonando, viene copiata una tabella completa.
  • CLONE_NAME è il nome del clone della tabella che stai creando.

Controllo degli accessi

Quando crei una copia della tabella, l'accesso alla copia viene impostato come segue:

  • I criteri di accesso a livello di riga vengono copiati dalla tabella di base alla tabella clonata.
  • I criteri di accesso a livello di colonna vengono copiati dalla tabella di base alla tabella clonata.
  • L'accesso a livello di tabella viene determinato come segue:

    • Se la clonazione della tabella sovrascrive una tabella esistente, l'accesso a livello di tabella per la tabella esistente viene mantenuto. I tag non vengono copiati dalla tabella di base.
    • Se la clonazione della tabella è una nuova risorsa, l'accesso a livello di tabella per la tabella clonata è determinato dai criteri di accesso del set di dati in cui viene creata la tabella clonata. Inoltre, i tag vengono copiati dalla tabella di base alla tabella clonata.

Passaggi successivi

  • Dopo aver creato un clone di una tabella, puoi utilizzarla come le tabelle standard. Per saperne di più, consulta Gestire le tabelle.