Visualizzazione della Cronologia delle Tabelle (Basi del Time Travel)
Scorri per mostrare il menu
Time Travel è una funzionalità di Delta Lake che consente di interrogare versioni precedenti di una tabella. Utilizzando il Transaction Log, Databricks può ricostruire lo stato dei dati in qualsiasi momento della sua cronologia registrata.
Una delle "reti di sicurezza" più potenti in Databricks è la possibilità di vedere esattamente chi ha modificato una tabella, quando è stata modificata e quale fosse l'aspetto dei dati prima di quella modifica.
Per la nostra tabella diamonds in workspace.workshop.diamonds, ogni aggiornamento o eliminazione viene tracciato automaticamente.
1. Il comando DESCRIBE HISTORY
Per visualizzare la cronologia completa dei dati, utilizzare il comando DESCRIBE HISTORY — fornisce un registro dettagliato di ogni versione della tabella.
DESCRIBE HISTORY workspace.workshop.diamonds
Eseguendo questo comando, verrà visualizzata una tabella con le seguenti colonne chiave:
- version: un intero che parte da 0 (la prima volta che la tabella è stata creata);
- timestamp: la data e l'ora esatta in cui è avvenuta la modifica;
- userName: la persona che ha eseguito l'azione;
- operation: l'operazione effettuata (ad esempio,
WRITE,UPDATE,DELETEoMERGE); - operationParameters: dettagli tecnici relativi alla modifica.
2. Interrogazione di una versione specifica
Se un aggiornamento recente ha compromesso la colonna "Price", è possibile interrogare una versione precedente per visualizzare i valori originali utilizzando la sintassi VERSION AS OF.
-- Look at the diamonds table exactly as it was in Version 0
SELECT * FROM workspace.workshop.diamonds VERSION AS OF 0
3. Interrogazione tramite timestamp
Se non si conosce il numero di versione ma si sa che i dati erano corretti in un momento specifico, è possibile "viaggiare" indietro nel tempo utilizzando TIMESTAMP AS OF.
-- Look at the data as it existed at a specific time
SELECT * FROM workspace.workshop.diamonds TIMESTAMP AS OF '2026-02-11 09:00:00'
4. Importanza della funzionalità
Nei database tradizionali, se si esegue accidentalmente un comando DELETE senza una clausola WHERE, è necessario contattare un amministratore di database per ripristinare un backup — un processo che può richiedere ore.
Con Delta Lake Time Travel, è possibile correggere l'errore autonomamente in pochi secondi selezionando i dati da una versione precedente e sovrascrivendo la tabella danneggiata con i dati storici integri.
5. Gestione della cronologia
Per impostazione predefinita, Delta Lake conserva 30 giorni di cronologia. Sebbene sia estremamente utile, la memorizzazione della cronologia richiede la conservazione dei file di dati più vecchi, ma i file di dati sottostanti delle versioni eliminate/sovrascritte vengono mantenuti solo per 7 giorni (delta.deletedFileRetentionDuration) prima che VACUUM possa eliminarli.
Negli ambienti professionali, i data engineer utilizzano il comando VACUUM per eliminare i file molto vecchi e ridurre i costi di archiviazione. Per questo corso, la tua cronologia è sicura e pronta per l'esplorazione.
VACUUM è un comando di pulizia che elimina definitivamente i vecchi file di dati di cui Delta Lake non ha più bisogno — quelli lasciati dopo aggiornamenti, eliminazioni o sovrascritture.
VACUUM workspace.workshop.diamonds
Per impostazione predefinita, Delta conserva 30 giorni di cronologia dei file per il Time Travel. VACUUM rimuove i file più vecchi di questa soglia per risparmiare spazio di archiviazione.
È anche possibile impostare una finestra di conservazione personalizzata:
VACUUM workspace.workshop.diamonds RETAIN 7 HOURS
1. Quale comando SQL permette di vedere l'elenco di tutte le versioni precedenti e delle operazioni eseguite su una tabella?
2. Hai aggiornato accidentalmente la tabella diamonds e vuoi vedere i dati di 10 minuti fa. Quale sintassi dovresti usare?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione