Gjenopprette Delta-tabeller

Med Delta Lake kan du bruke kommandoen RESTORE for å gjøre en eldre tabell oppdatert igjen. RESTORE tilbakestiller en Delta-tabell til en tidligere tabellversjon eller til tabellens tilstand ved et bestemt tidsstempel.

Bruk RESTORE når du trenger å komme deg raskt etter en dårlig endring uten å manuelt bygge opp bordet på nytt. Fordi Delta-tabeller lagrer transaksjonshistorikk, kan du ofte rulle tilbake til en kjent god tilstand med én enkelt kommando.

Hva RESTORE gjør

RESTORE endrer den nåværende tilstanden til en Delta-tabell slik at den matcher en tidligere forpliktet versjon.

Du kan gjenopprette en tabell når du trenger:

  • Gjenopprette etter utilsiktede slettinger eller oppdateringer
  • Angre en dårlig, MERGEoverskriv eller legg til operasjon
  • Rull tilbake en skjemaendring som bryter ned nedstrøms arbeidsbelastninger
  • Gjenopprette fra korrupsjon introdusert av et feilaktig skrive- eller pipeline-steg

I motsetning til en skrivebeskyttet historisk spørring, RESTORE endrer den live table-tilstanden som nye lesere ser.

Syntaks

Bruk en av disse formene for å gjenopprette en Delta-tabell.

Gjenopprette til en spesifikk Delta-tabellversjon:

RESTORE TABLE schema_name.table_name TO VERSION AS OF 5

Gjenopprett tabellens tilstand ved et bestemt tidsstempel:

RESTORE TABLE schema_name.table_name TO TIMESTAMP AS OF '2026-05-01 12:00:00'

Før du gjenoppretter, inspiser tabellhistorikken slik at du kan velge riktig versjon:

DESCRIBE HISTORY schema_name.table_name

En vanlig gjenopprettingsarbeidsflyt ser slik ut:

DESCRIBE HISTORY dbo.orders;
RESTORE TABLE dbo.orders TO VERSION AS OF 42

PySpark-metodene DeltaTable utfører samme logiske operasjon som SQL-kommandoen RESTORE TABLE .

Hva skjer under gjenoppretting

Når du kjører RESTORE, omskriver ikke Delta Lake målversjonen på stedet. I stedet opprettes en ny versjon i Delta-loggen som peker tilbake til datafilene knyttet til versjonen eller tidsstempelet du valgte.

Den oppførselen har noen viktige konsekvenser:

  • RESTORE oppretter en ny nåværende versjon av tabellen.
  • Filene fra det gjenopprettede punktet blir aktive igjen.
  • Filene fra den nåværende tilstanden før gjenoppretting blir ikke slettet umiddelbart.
  • De nå urefererte filene kan ryddes opp senere med VACUUM.
  • Selve gjenopprettingen registreres som en versjonert tabellendring.

Fordi RESTORE er versjonsbasert, kan du inspisere det i tabellhistorikken:

DESCRIBE HISTORY schema_name.table_name

RESTORE, tidsreise og VAKUUM

RESTORE og tidsreiser bruker samme Delta-historie, men de løser forskjellige problemer.

  • Bruk tidsreise når du bare trenger å lese eldre data uten å endre nåværende tabellstatus.
  • Bruk RESTORE når du vil at den eldre tilstanden skal bli den nåværende tilstanden for alle nye lesinger og skrivinger.

VACUUM Det påvirker gjenoppretting fordi det fjerner urefererte filer fra lagringen. Etter en gjenoppretting blir filene fra den tidligere nåværende tilstanden vanligvis uten referanser. Hvis du ikke lenger trenger dem, kan du vaske dem med VACUUM.

Det motsatte er også viktig: VACUUM det kan forhindre en fremtidig restaurering. Hvis VACUUM du allerede har fjernet filene som kreves for versjonen du vil gjenopprette RESTORE , feiler fordi tabellhistorikken ikke lenger har tilgang til de fysiske filene.

Begrensninger

RESTORE Fungerer bare når målversjonen fortsatt har alle nødvendige datafiler tilgjengelig.

Husk disse grensene:

  • Du kan kun gjenopprette til versjoner hvis datafiler fortsatt eksisterer.
  • Hvis VACUUM du fjerner disse filene, feiler gjenopprettingsoperasjonen.
  • Gjenopprettingshistorikk styres av Delta-lagringsinnstillinger, inkludert delta.logRetentionDuration, og av faktisk lagring av datafiler i lagring.
  • I praksis påvirker både transaksjonsloggoppbevaring og fillagring hvor langt tilbake du kan gjenopprette.

Beste fremgangsmåter

Bruk disse praksisene for å redusere risiko:

  • Kjør DESCRIBE HISTORY før du gjenoppretter slik at du kan bekrefte riktig versjon eller tidsstempel.
  • Bruk tidsreise-spørringer først hvis du bare trenger å inspisere eldre data og ikke vil endre den nåværende tabellens tilstand.
  • Kjør VACUUM etter en gjenoppretting når du vil rydde opp urefererte filer fra pre-gjenopprettingstilstanden.
  • Test gjenopprettingsveien på en klonetabell først når du jobber med kritiske produksjonsdata.