Ripristinare tabelle eliminate
Questo documento descrive come ripristinare (o recuperare) una tabella eliminata in BigQuery. Puoi ripristinare una tabella eliminata entro la finestra di spostamento cronologico specificata per il set di dati, incluse le eliminazioni esplicite e quelle implicite dovute alla scadenza della tabella. Puoi anche configurare la finestra di time travel.
Per informazioni su come ripristinare un intero set di dati o snapshot eliminato, consulta le seguenti risorse:
La finestra di spostamento cronologico può avere una durata compresa tra due e sette giorni. Una volta trascorso il periodo di spostamento nel tempo, BigQuery fornisce un periodo di sicurezza in cui i dati eliminati vengono conservati automaticamente per altri sette giorni. Una volta trascorso il periodo di sicurezza, non è possibile ripristinare una tabella con alcun metodo, inclusa l'apertura di una richiesta di assistenza.
Prima di iniziare
Assicurati di disporre delle autorizzazioni Identity and Access Management (IAM) necessarie per ripristinare una tabella eliminata.
Ruoli obbligatori
Per ottenere le autorizzazioni
necessarie per ripristinare una tabella eliminata,
chiedi all'amministratore di concederti il
ruolo IAM BigQuery User (roles/bigquery.user) sul progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Ripristinare una tabella
Puoi ripristinare una tabella dai dati storici copiandoli in una nuova tabella. La copia dei dati storici funziona anche se la tabella è stata eliminata o è scaduta, a condizione che la ripristini entro la durata della finestra di spostamento cronologico.
Quando ripristini una tabella dai dati storici, i tag della tabella di origine non vengono copiati nella tabella di destinazione. Anche le informazioni sul partizionamento della tabella non vengono copiate nella tabella di destinazione. Per ricreare lo schema di partizionamento della tabella originale, puoi visualizzare la richiesta di creazione iniziale della tabella in Cloud Logging e utilizzare queste informazioni per partizionare la tabella ripristinata.
Puoi ripristinare una tabella eliminata ma ancora all'interno della finestra di Time Travel
copiandola in una nuova tabella utilizzando il decoratore temporale @<time>.
Non puoi eseguire query su una tabella eliminata, anche se utilizzi un decoratore temporale. Devi prima
ripristinarlo.
Utilizza la seguente sintassi con il decoratore temporale @<time>:
tableid@TIMEdoveTIMEè il numero di millisecondi dall'epoca Unix.tableid@-TIME_OFFSETdoveTIME_OFFSETè l'offset relativo rispetto all'ora attuale, in millisecondi.tableid@0: specifica i dati storici meno recenti disponibili.
Per ripristinare una tabella, seleziona una delle seguenti opzioni:
Console
Non puoi recuperare una tabella utilizzando la console Google Cloud .
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per ripristinare una tabella, determina innanzitutto un timestamp UNIX di quando la tabella esisteva (in millisecondi). Puoi utilizzare il comando Linux
dateper generare il timestamp Unix da un valore di timestamp normale:date -d '2023-08-04 16:00:34.456789Z' +%s000
Quindi, utilizza il comando
bq copycon il decoratore di time travel@<time>per eseguire l'operazione di copia della tabella.Ad esempio, inserisci il seguente comando per copiare la tabella
mydataset.mytableall'ora1418864998000in una nuova tabellamydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Facoltativo) Fornisci il flag
--locatione imposta il valore sulla tua posizione.Puoi anche specificare un offset relativo. Il seguente esempio copia la versione di una tabella di un'ora fa:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Se prevedi di voler ripristinare una tabella in un momento successivo a quello consentito dalla finestra di Time Travel, crea uno snapshot della tabella. Per saperne di più, consulta la pagina Introduzione agli snapshot delle tabelle.
Non puoi ripristinare direttamente una visualizzazione logica. Per ulteriori informazioni, vedi Ripristinare una visualizzazione.
Risolvere i problemi di recupero delle tabelle
Esecuzione di query sulla tabella eliminata utilizzando un timestamp nel passato
Non puoi ripristinare i dati della tabella eseguendo query su una tabella eliminata in passato utilizzando un
decoratore timestamp o utilizzando
FOR SYSTEM_TIME AS OF
per salvare il risultato in una tabella di destinazione. L'utilizzo di uno di questi metodi
genera il seguente errore:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Per copiare la tabella, segui i passaggi descritti in Ripristinare una tabella.
Errore: VPC Service Controls: Request is prohibited by organization's policy
Quando tenti di eseguire il comando di copia da Google Cloud Shell, potresti riscontrare un errore come il seguente:
BigQuery error in cp operation: VPC Service Controls: Request is prohibited by organization's policy
L'utilizzo di Cloud Shell dalla console Google Cloud con Controlli di servizio VPC non è supportato, perché viene trattato come una richiesta al di fuori dei perimetri di servizio e l'accesso ai dati protetti da Controlli di servizio VPC viene negato. Per risolvere questo problema, avvia e connettiti a Cloud Shell localmente con Google Cloud CLI.
Errore: Latest categories are incompatible with schema
Se esegui il comando di copia da Google Cloud Shell, potresti ricevere un errore come il seguente:
Latest categories are incompatible with schema at TIMESTAMP
Esistono diverse possibili cause di questo errore:
- Lo schema della tabella di destinazione è diverso da quello della tabella originale (sono consentite colonne aggiuntive, a condizione che non abbiano tag di policy a livello di colonna allegati).
- I tag dei criteri a livello di colonna della tabella di destinazione sono configurati in modo diverso rispetto alla tabella di origine.
Per risolvere questo errore:
- Assicurati che lo schema della tabella di destinazione sia identico e che nessuna delle colonne della tabella originale sia mancante nella tabella di destinazione.
- Rimuovi dalla tabella di destinazione tutti i tag di criteri a livello di colonna che non sono presenti nello schema della tabella originale.
Errore: BigQuery error in cp operation: Invalid time travel timestamp
Se esegui il comando bq copy da Google Cloud Shell, potresti ricevere un
errore simile al seguente:
BigQuery error in cp operation: Invalid time travel timestamp 1744343690000 for table PROJECT_ID:DATASET_ID.TABLE_ID@1744343690000. Cannot read before 1744843691075
Questo errore indica che stai tentando di recuperare i dati dallo stato della tabella
prima della finestra di Time Travel o prima della creazione della tabella. Questa opzione
non è supportata. Il messaggio di errore contiene il timestamp più recente che può essere
utilizzato per leggere i dati della tabella. Utilizza il timestamp dell'errore nel comando bq copy.
Questo errore può verificarsi anche quando fornisci un valore timestamp negativo, ad esempio TABLE@-1744963620000. Utilizza invece un offset temporale che può essere utilizzato
con il segno -.
BigQuery error in cp operation: Invalid time travel timestamp 584878816 for table PROJECT_ID:DATASET_ID.TABLE_ID@584878816. Cannot read before 1744843691075
Questo messaggio di errore indica che il comando bq cp contiene un valore
timestamp negativo come offset e che hai tentato di leggere la tabella in
CURRENT_TIMESTAMP - PROVIDED TIMESTAMP. Questo valore è normalmente un timestamp
nel 1970. Per risolvere questo problema, verifica i valori di offset o timestamp quando
imposti il valore del decoratore della tabella e utilizza il segno - in modo appropriato.
Viste materializzate
Non puoi ripristinare direttamente una vista materializzata eliminata. Se elimini una vista materializzata, devi ricrearla.
Se elimini una tabella che è una tabella di base per una vista materializzata, la vista materializzata non può più essere interrogata o aggiornata. Se ripristini la tabella di base seguendo i passaggi descritti in Ripristinare una tabella, devi anche ricreare tutte le viste materializzate che utilizzano quella tabella.
Passaggi successivi
- Scopri come creare e utilizzare le tabelle.
- Scopri come gestire le tabelle.
- Scopri come modificare gli schemi delle tabelle.
- Scopri di più su come utilizzare i dati delle tabelle.