Crea snapshot delle tabelle
Questo documento descrive come creare uno snapshot di una tabella utilizzando la console Google Cloud, l'istruzione SQL CREATE SNAPSHOT TABLE
, il comando bq cp --snapshot
o l'API jobs.insert
. Questo
documento è rivolto agli utenti che hanno familiarità con gli
snapshot delle tabelle BigQuery.
Autorizzazioni e ruoli
Questa sezione descrive le autorizzazioni di Identity and Access Management (IAM) di cui hai bisogno per creare uno snapshot di tabella e i ruoli IAM predefiniti che concedono queste autorizzazioni.
Autorizzazioni
Per creare uno snapshot della tabella, devi disporre delle seguenti autorizzazioni:
Autorizzazione | Risorsa | Note |
---|---|---|
Tutte le seguenti caratteristiche:bigquery.tables.get bigquery.tables.getData bigquery.tables.createSnapshot bigquery.datasets.get bigquery.jobs.create
|
La tabella di cui vuoi acquisire uno snapshot. | Poiché la scadenza dello snapshot ne comporta l'eliminazione in un secondo momento, per creare uno snapshot con una data di scadenza devi disporre dell'autorizzazione bigquery.tables.deleteSnapshot . |
bigquery.tables.create bigquery.tables.updateData
|
Il set di dati che contiene lo snapshot della tabella. |
Ruoli
I ruoli BigQuery predefiniti che forniscono autorizzazioni sono le seguenti:
Role | Risorsa | Note |
---|---|---|
Almeno uno dei seguenti:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner Inoltre, deve rispettare almeno uno dei seguenti criteri: bigquery.jobUser bigquery.studioUser bigquery.user bigquery.studioAdmin bigquery.admin
|
La tabella di cui vuoi acquisire uno snapshot. | Solo bigquery.dataOwner , bigquery.admin e
Puoi utilizzare bigquery.studioAdmin per creare uno snapshot con un
e scadenza. |
Almeno uno dei seguenti:bigquery.dataEditor bigquery.dataOwner bigquery.studioAdmin bigquery.admin
|
Il set di dati che contiene il nuovo snapshot della tabella. |
Limitazioni
Per informazioni sulle limitazioni degli snapshot tabella, consulta limitazioni degli snapshot delle tabelle.
Inoltre, la creazione di snapshot delle tabelle è soggetta alle seguenti limitazioni: che si applicano a tutte le job di copia di tabelle:
- Quando crei uno snapshot della tabella, il suo nome deve rispettare le le stesse regole di denominazione utilizzate per creare una tabella.
- La creazione di snapshot delle tabelle è soggetta ai limiti di BigQuery per i job di copia.
- Il set di dati di snapshot della tabella deve trovarsi nella stessa regione e nella stessa organizzazione del set di dati che contiene la tabella di cui stai acquisendo uno snapshot. Ad esempio: non puoi creare uno snapshot di tabella in un set di dati basato negli Stati Uniti di una tabella situata in un set di dati basato sull'UE. Dovrai invece creare una copia della tabella.
- Il tempo impiegato da BigQuery per creare snapshot delle tabelle potrebbe varia in modo significativo in diverse esecuzioni perché lo spazio di archiviazione sottostante è gestito in modo dinamico.
- Quando crei uno snapshot di tabella utilizzando l'interfaccia a riga di comando di BigQuery, lo snapshot ha chiave di crittografia predefinita del set di dati di destinazione. Durante la creazione di una tabella utilizzando SQL, lo snapshot ha la stessa chiave di crittografia e la tabella di origine.
Crea uno snapshot della tabella
La best practice è creare uno snapshot della tabella in un set di dati diverso dalla e la tabella di base. In questo modo, la tabella di base ripristinato anche se il set di dati della tabella di base viene eliminato accidentalmente.
Quando crei uno snapshot tabella, specifichi la tabella di cui vuoi creare lo snapshot e un nome univoco per lo snapshot tabella. Se vuoi, puoi specificare l'ora dello snapshot e la relativa scadenza.
Crea uno snapshot della tabella con una scadenza
Puoi creare lo snapshot di una tabella che scade dopo 24 ore utilizzando una delle seguenti opzioni:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, espandi i nodi del progetto e del set di dati della tabella di cui vuoi acquisire lo snapshot.
Fai clic sul nome della tabella di cui vuoi acquisire uno snapshot.
Nel riquadro della tabella che appare, fai clic su Istantanea.
Nel riquadro Crea snapshot tabella visualizzato, inserisci il valore Progetto. Informazioni su Set di dati e Tabella per il nuovo snapshot della tabella.
Nel campo Ora di scadenza, inserisci la data e l'ora di 24 ore da adesso.
Fai clic su Salva.
SQL
Utilizza la
CREATE SNAPSHOT TABLE
Istruzione DDL:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME OPTIONS ( expiration_timestamp = TIMESTAMP 'TIMESTAMP_VALUE');
Sostituisci quanto segue:
SNAPSHOT_PROJECT_ID
: l'ID progetto del progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella da cui stai creando lo snapshot.TIMESTAMP_VALUE
: A valore timestamp che rappresentano la data e l'ora delle prossime 24 ore.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Inserisci questo comando in Cloud Shell:
bq cp \ --snapshot \ --no_clobber \ --expiration=86400 \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Sostituisci quanto segue:
TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella da cui stai creando lo snapshot.SNAPSHOT_PROJECT_ID
: l'ID progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.
Il flag --no_clobber
è obbligatorio.
API
Chiama il metodo
jobs.insert
con
i seguenti parametri:
Parametro | Valore |
---|---|
projectId |
L'ID progetto per cui fatturare questa operazione. |
Corpo della richiesta | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY", "destinationExpirationTime":"TIMESTAMP_VALUE" } } } |
Sostituisci quanto segue:
TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella da cui stai creando lo snapshot.SNAPSHOT_PROJECT_ID
: l'ID progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.TIMESTAMP_VALUE
: A valore timestamp che rappresentano la data e l'ora delle prossime 24 ore.
Come per le tabelle, se non viene specificata una scadenza, lo snapshot della tabella scade dopo la data e l'ora di scadenza predefiniti della tabella o del set di dati che contiene lo snapshot della tabella.
Creare uno snapshot di una tabella utilizzando il viaggio nel tempo
Puoi creare lo snapshot di una tabella così com'era un'ora prima utilizzando una delle seguenti opzioni:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, espandi i nodi del progetto e del set di dati della tabella di cui vuoi eseguire uno snapshot.
Fai clic sul nome della tabella di cui vuoi acquisire uno snapshot.
Nel riquadro della tabella che appare, fai clic su Istantanea.
Nel riquadro Crea snapshot tabella visualizzato, inserisci il valore Progetto. Informazioni su Set di dati e Tabella per il nuovo snapshot della tabella.
Nel campo Ora snapshot, inserisci la data e l'ora di un'ora fa.
Fai clic su Salva.
SQL
Utilizza l'istruzione DDL CREATE SNAPSHOT TABLE
con una clausola FOR SYSTEM_TIME AS OF
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
CREATE SNAPSHOT TABLE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME CLONE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Sostituisci quanto segue:
SNAPSHOT_PROJECT_ID
: l'ID progetto del progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella che stai la creazione dello snapshot.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire query, consulta Eseguire una query interattiva.
bq
Inserisci questo comando in Cloud Shell:
bq cp \ --no_clobber \ --snapshot \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME@-3600000 \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME
Sostituisci quanto segue:
TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella da cui stai creando lo snapshot.SNAPSHOT_PROJECT_ID
: l'ID progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.
Il flag --no_clobber
è obbligatorio.
API
Chiama il
jobs.insert
con i seguenti parametri:
Parametro | Valore |
---|---|
projectId |
L'ID progetto per cui fatturare questa operazione. |
Corpo della richiesta | { "configuration": { "copy": { "sourceTables": [ { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME@-360000" } ], "destinationTable": { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
Sostituisci quanto segue:
TABLE_PROJECT_ID
: l'ID progetto del progetto che contiene la tabella da cui stai creando lo snapshot.TABLE_DATASET_NAME
: il nome del set di dati che contiene la tabella da cui stai creando lo snapshot.TABLE_NAME
: il nome della tabella da cui stai creando lo snapshot.SNAPSHOT_PROJECT_ID
: l'ID progetto in cui creare lo snapshot.SNAPSHOT_DATASET_NAME
: nome del set di dati in cui creare lo snapshot.SNAPSHOT_NAME
: il nome dello snapshot che stai creando.
Per ulteriori informazioni su come specificare una versione precedente di una tabella, consulta Accedere ai dati storici utilizzando il viaggio nel tempo.
Controllo dell'accesso alle tabelle
Per controllare l'accesso alle tabelle in BigQuery, consulta Introduzione ai controlli di accesso alle tabelle.
Quando crei uno snapshot della tabella, accesso a livello di tabella alla tabella. è impostato come segue:
- Se lo snapshot della tabella sovrascrive una tabella esistente, lo snapshot a livello di tabella per la tabella esistente sia mantenuto. Tag non vengono copiati dalla tabella di base.
- Se lo snapshot della tabella è una nuova risorsa, l'accesso a livello di tabella per lo snapshot della tabella è determinato dai criteri di accesso del set di dati in cui viene creato lo snapshot della tabella. Inoltre, i tag vengono copiati dalla tabella di base all'istantanea della tabella.
Passaggi successivi
- Aggiorna la descrizione, la data di scadenza o il criterio di accesso di uno snapshot di tabella.
- Ripristinare uno snapshot della tabella.
- Crea snapshot mensili di una tabella utilizzando un account di servizio che esegue una query pianificata.