Crea cloni di tabelle
Questo documento descrive come copiare una tabella in un
clone di tabella utilizzando un'
CREATE TABLE CLONE
istruzione SQL, un bq cp
comando o una jobs.insert
chiamata API. Questo documento è rivolto agli utenti che hanno familiarità con
i cloni di tabelle.
Autorizzazioni e ruoli
Questa sezione descrive le autorizzazioni Identity and Access Management (IAM) necessarie per creare un clone di tabella e i ruoli IAM predefiniti che concedono queste autorizzazioni.
Autorizzazioni
Per creare un clone di tabella, devi disporre delle seguenti autorizzazioni:
| Autorizzazione | Risorsa |
|---|---|
Tutte le seguenti:bigquery.tables.getbigquery.tables.getData |
La tabella di cui vuoi creare un clone. |
bigquery.tables.createbigquery.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:
| Ruolo | Risorsa |
|---|---|
Uno dei seguenti:bigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
La tabella di cui vuoi creare un clone. |
Uno dei seguenti:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
Il set di dati che contiene il nuovo clone della tabella. |
Crea un clone di tabella
Utilizza GoogleSQL, lo strumento a riga di comando bq o l'API BigQuery per creare un clone di tabella.
SQL
Per clonare una tabella, utilizza l' istruzione CREATE TABLE CLONE.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Esegui una query interattiva.
Sostituisci quanto segue:
PROJECTè l'ID progetto del progetto di destinazione. Questo progetto deve appartenere alla 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 bq cp comando
con il --clone flag:
bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
Sostituisci quanto segue:
PROJECTè l'ID progetto del progetto di destinazione. Questo progetto deve appartenere alla 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.
Il flag --no_clobber è obbligatorio.
Se stai creando un clone nello stesso progetto della tabella di base, puoi omettere la specifica di un progetto, come mostrato di seguito:
bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME
API
Chiama il
jobs.insert metodo con il
operationType campo impostato su CLONE:
| Parametro | Valore |
|---|---|
projectId |
L'ID progetto 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 progetto del progetto di destinazione. Questo progetto deve appartenere alla 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 un clone di tabella, l'accesso al clone della tabella viene impostato come segue:
- Le policy di accesso a livello di riga vengono copiate dalla tabella di base al clone della tabella.
- Le policy di accesso a livello di colonna vengono copiate dalla tabella di base al clone della tabella.
L'accesso a livello di tabella è determinato come segue:
- Se il clone 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 il clone della tabella è una nuova risorsa, l'accesso a livello di tabella per il clone della tabella è determinato dalle policy di accesso del set di dati in cui viene creato il clone della tabella. Inoltre, i tag vengono copiati dalla tabella di base al clone della tabella.
Passaggi successivi
- Dopo aver creato un clone di tabella, puoi utilizzarlo come le tabelle standard. Per saperne di più, consulta Gestire le tabelle.