Crea snapshot della tabella

Questo documento descrive come creare uno snapshot di una tabella utilizzando Console Google Cloud, la CREATE SNAPSHOT TABLE l'istruzione SQL, bq cp --snapshot, o l'API jobs.insert. Questo è destinato a utenti che conoscono bene BigQuery snapshot delle tabelle.

Autorizzazioni e ruoli

Questa sezione descrive le Autorizzazioni IAM (Identity and Access Management) necessarie per creare uno snapshot della tabella 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 creare uno snapshot. Poiché la scadenza dello snapshot elimina lo snapshot in un secondo momento, per crea uno snapshot con una data di scadenza, devi avere 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 creare 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 degli snapshot delle tabelle è soggetta a BigQuery limiti relativi ai job di copia.
  • Il set di dati dello snapshot della tabella deve essere nello stesso region e sotto la stessa organizzazione, come set di dati che contiene la tabella di cui stai eseguendo 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.

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 della tabella, specifichi la tabella che da creare e un nome univoco per lo snapshot. In via facoltativa, specificare l'ora dello snapshot e della tabella di snapshot 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

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

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi i nodi del progetto e del set di dati della tabella di cui vuoi eseguire uno snapshot.

  3. Fai clic sul nome della tabella di cui vuoi creare uno snapshot.

  4. Nel riquadro della tabella che appare, fai clic su Istantanea.

    Fai clic su Istantanea

  5. Nel riquadro Crea snapshot tabella visualizzato, inserisci il valore Progetto. Informazioni su Set di dati e Tabella per il nuovo snapshot della tabella.

  6. Nel campo Data di scadenza, inserisci la data e l'ora di 24 ore. da adesso.

  7. Fai clic su Salva.

SQL

Utilizza la CREATE SNAPSHOT TABLE Istruzione DDL:

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

    Vai a BigQuery

  2. 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 contenente la tabella da cui viene creato lo snapshot.
    • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
    • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.
    • TIMESTAMP_VALUE: A valore timestamp che rappresentano la data e l'ora delle prossime 24 ore.

  3. Fai clic su Esegui.

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

bq

Inserisci questo comando in Cloud Shell:

Vai a 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 contenente la tabella da cui viene creato lo snapshot.
  • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
  • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.
  • 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.

Il flag --no_clobber è obbligatorio.

API

Chiama il Metodo jobs.insert con i seguenti parametri:

Parametro Valore
projectId L'ID del progetto da fatturare per 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 contenente la tabella da cui viene creato lo snapshot.
  • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
  • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.
  • 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.
  • 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, viene generato lo snapshot della tabella. scade dopo il scadenza predefinita della tabella o il set di dati che contiene lo snapshot della tabella.

Crea uno snapshot della tabella utilizzando lo spostamento cronologico

Puoi creare lo snapshot di una tabella così com'era un'ora prima utilizzando una delle seguenti opzioni:

Console

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

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi i nodi del progetto e del set di dati della tabella di cui vuoi eseguire uno snapshot.

  3. Fai clic sul nome della tabella di cui vuoi creare uno snapshot.

  4. Nel riquadro della tabella che appare, fai clic su Istantanea.

    Fai clic su Istantanea

  5. Nel riquadro Crea snapshot tabella visualizzato, inserisci il valore Progetto. Informazioni su Set di dati e Tabella per il nuovo snapshot della tabella.

  6. Nel campo Ora snapshot, inserisci la data e l'ora di un'ora fa.

  7. Fai clic su Salva.

SQL

Utilizza la CREATE SNAPSHOT TABLE Istruzione DDL con una clausola FOR SYSTEM_TIME AS OF:

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

    Vai a BigQuery

  2. 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 contenente la tabella da cui viene creato lo snapshot.
    • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
    • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.

  3. Fai clic su Esegui.

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

bq

Inserisci questo comando in Cloud Shell:

Vai a 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 contenente la tabella da cui viene creato lo snapshot.
  • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
  • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.
  • 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.

Il flag --no_clobber è obbligatorio.

API

Chiama il jobs.insert con i seguenti parametri:

Parametro Valore
projectId L'ID del progetto da fatturare per 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 contenente la tabella da cui viene creato lo snapshot.
  • TABLE_DATASET_NAME: nome del set di dati che contiene la tabella da cui viene creato lo snapshot.
  • TABLE_NAME: il nome della tabella che stai la creazione dello snapshot.
  • 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.

Per ulteriori informazioni su come specificare una versione precedente di una tabella, vedi Accesso ai dati storici utilizzando i viaggi nel tempo.

Controllo dell'accesso alla tabella

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 copiato dalla tabella di base allo snapshot della tabella.

Passaggi successivi