Accedi ai dati storici
BigQuery ti consente di eseguire query e ripristinare i dati archiviati in BigQuery che sono stati modificati o eliminati nella finestra di viaggio nel tempo. L'accesso a questi dati storici ti consente di recuperare i dati eliminati accidentalmente o di analizzare lo stato esatto dei tuoi dati in un momento specifico del passato senza dover gestire backup separati.
Esegui query sui dati in un momento specifico
Puoi eseguire query sui dati storici di una tabella da qualsiasi momento all'interno della finestra di viaggio nel tempo utilizzando una clausola FOR SYSTEM_TIME AS OF. Questa clausola accetta un'espressione timestamp costante e fa riferimento alla versione della tabella corrente in quel timestamp. La tabella deve essere archiviata in BigQuery e non può essere una tabella esterna. Non esiste un limite alle dimensioni della tabella quando utilizzi SYSTEM_TIME AS OF.
Ad esempio, la seguente query restituisce una versione storica della tabella di un'ora prima:
SELECT *
FROM `mydataset.mytable`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
Se il timestamp specifica un'ora precedente alla finestra temporale di viaggio nel tempo o precedente alla creazione della tabella, la query non va a buon fine e restituisce un errore simile al seguente:
Invalid snapshot time 1601168925462 for table myproject:mydataset.table1@1601168925462. Cannot read before 1601573410026.
Dopo aver sostituito una tabella esistente utilizzando l'istruzione CREATE OR REPLACE TABLE, puoi utilizzare FOR SYSTEM_TIME AS OF per eseguire query sulla versione precedente della tabella.
Se la tabella è stata eliminata, non puoi eseguire query sui relativi dati storici direttamente utilizzando
FOR SYSTEM_TIME AS OF. La query non va a buon fine e restituisce un errore simile al seguente:
Not found: Table myproject:mydataset.table was not found in location LOCATION
Per accedere ai dati storici di una tabella eliminata, devi invece ripristinare la tabella da un momento specifico.
Ripristina una tabella da un momento specifico
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 venga ripristinata entro la durata della finestra di viaggio nel tempo.
Quando ripristini una tabella dai dati storici, i tag della tabella di origine non vengono copiati nella tabella di destinazione. Inoltre, 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 della tabella iniziale in Cloud Logging e utilizzare queste informazioni per partizionare la tabella ripristinata.
Puoi ripristinare solo un'intera tabella. Non puoi ripristinare singole partizioni.
Ad esempio, la copia di una partizione utilizzando un decoratore di partizione come bq cp mydataset.mytable$20260712@1418864998000 mydataset.mytable_restored non è supportata.
Puoi ripristinare una tabella eliminata, ma ancora all'interno della finestra di viaggio nel tempo, copiandola in una nuova tabella utilizzando l'indicatore di tempo @<time>.
Non puoi eseguire query su una tabella eliminata, anche se utilizzi un decoratore di tempo. Devi prima ripristinarlo.
Utilizza la seguente sintassi con il decoratore di tempo @<time>:
tableid@TIMEdoveTIMEè il numero di millisecondi dall'epoca di Unix.tableid@-TIME_OFFSETdoveTIME_OFFSETè l'offset relativo rispetto all'ora corrente, in millisecondi.tableid@0: specifica i dati storici più vecchi disponibili.
Per ripristinare una tabella, seleziona una delle seguenti opzioni:
Console
Non puoi annullare l'eliminazione di una tabella utilizzando la console Google Cloud .
bq
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud , viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Per ripristinare una tabella, devi prima determinare 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 viaggi nel tempo@<time>per eseguire l'operazione di copia della tabella.Ad esempio, inserisci il seguente comando per copiare la tabella
mydataset.mytableal momento1418864998000in una nuova tabellamydataset.newtable.bq cp mydataset.mytable@1418864998000 mydataset.newtable
(Facoltativo) Specifica il flag
--locatione imposta il valore sulla tua località.Puoi anche specificare un offset relativo. L'esempio seguente copia la versione di una tabella di un'ora fa:
bq cp mydataset.mytable@-3600000 mydataset.newtable
Vai
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 Configura 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 Configura 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 Configura 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 Configura l'autenticazione per le librerie client.
Se prevedi di voler ripristinare una tabella in un secondo momento rispetto a quanto consentito dalla finestra di viaggio nel tempo, crea uno snapshot della tabella. Per saperne di più, consulta Introduzione agli snapshot delle tabelle.
Non puoi ripristinare direttamente una vista logica. Per saperne di più, consulta Ripristina una visualizzazione.
Passaggi successivi
- Scopri di più sugli snapshot delle tabelle.
- Scopri di più sulla conservazione dei dati con l'itinerario cronologico e il fail-safe.
- Scopri di più sulla gestione delle tabelle.