Ta bort deltatabellfunktioner

Viktigt!

Stöd för att ta bort Delta-tabellfunktioner och nedgradera protokollversioner finns i offentlig förhandsversion i Databricks Runtime 14.1 och senare.

Azure Databricks ger begränsat stöd för att ta bort tabellfunktioner. Om du vill släppa en tabellfunktion måste följande inträffa:

  • Inaktivera tabellegenskaper som använder tabellfunktionen.
  • Ta bort alla spår av tabellfunktionen från datafilerna som stöder tabellen.
  • Ta bort transaktionsposter som använder tabellfunktionen från transaktionsloggen.
  • Nedgradera tabellprotokollet.

Där det stöds bör du endast använda den här funktionen för att stödja kompatibilitet med tidigare Databricks Runtime-versioner, Delta-delning eller andra Delta Lake-läsare eller skrivklienter.

Viktigt!

Alla DROP FEATURE åtgärder står i konflikt med alla samtidiga skrivningar.

Direktuppspelningsläsningar misslyckas när de påträffar en incheckning som ändrar tabellmetadata. Om du vill att strömmen ska fortsätta måste du starta om den. Rekommenderade metoder finns i Produktionsöverväganden för strukturerad direktuppspelning.

Hur kan jag släppa en Delta-tabellfunktion?

Om du vill ta bort en Delta-tabellfunktion kör du ett ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY] kommando. Se ALTER TABLE(ÄNDRA TABELL).

Du måste använda Databricks Runtime 14.1 eller senare och ha MODIFY behörigheter i Delta-måltabellen.

Vilka Delta-tabellfunktioner kan tas bort?

Du kan släppa följande Delta-tabellfunktioner:

Du kan inte släppa andra Delta-tabellfunktioner.

Hur tas Delta-tabellfunktionerna bort?

Eftersom Delta-tabellfunktioner representerar läsar- och skrivprotokoll måste de vara helt frånvarande från transaktionsloggen för fullständig borttagning. Att släppa en funktion sker i två steg och kräver tid att förflutit innan den är klar. Detaljerna för funktionsborttagning varierar beroende på funktion, men följande avsnitt innehåller en allmän översikt.

Förbereda för att släppa en tabellfunktion

Under den första fasen förbereder sig användaren för att släppa tabellfunktionen. Följande beskriver vad som händer under den här fasen:

  1. Användaren kör DROP FEATURE kommandot .
  2. Tabellegenskaper som specifikt aktiverar en tabellfunktion har värden inställda för att inaktivera funktionen.
  3. Tabellegenskaper som styr beteenden som är associerade med den borttagna funktionen har alternativ inställda på standardvärden innan funktionen introducerades.
  4. Vid behov skrivs data- och metadatafiler om med respekt för de uppdaterade tabellegenskaperna.
  5. Kommandot slutför körningen och returnerar ett felmeddelande som informerar användaren om att de måste vänta 24 timmar för att fortsätta med funktionsborttagningen.

När du har inaktiverat en funktion kan du fortsätta skriva till måltabellen innan du slutför nedgraderingen av protokollet, men du kan inte använda tabellfunktionen som du tar bort.

Kommentar

Om du lämnar tabellen i det här tillståndet använder åtgärder mot tabellen inte tabellfunktionen, men protokollet stöder fortfarande tabellfunktionen. Tabellen kan inte läsas av Delta-klienter som inte förstår tabellfunktionen förrän du har slutfört det sista nedgraderingssteget.

Nedgradera protokollet och släpp en tabellfunktion

Om du vill ta bort tabellfunktionen måste du ta bort all transaktionshistorik som är associerad med funktionen och nedgradera protokollet.

  1. När minst 24 timmar har passerat kör DROP FEATURE användaren kommandot igen med TRUNCATE HISTORY -satsen.
  2. Klienten bekräftar att inga transaktioner i det angivna kvarhållningströskelvärdet använder tabellfunktionen och trunkerar sedan tabellhistoriken till det intrånget.
  3. Protokollet nedgraderas och tabellfunktionen tas bort.
  4. Om tabellfunktionerna som finns i tabellen kan representeras av en äldre protokollversion minReaderVersion nedgraderas tabellens och minWriterVersion till den lägsta versionen som stöder exakt alla återstående funktioner som används av Delta-tabellen.

Viktigt!

Körning ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY tar bort alla transaktionsloggdata som är äldre än 24 timmar. När du har släppt en Delta-tabellfunktion har du inte åtkomst till tabellhistorik eller tidsresor.

Se Hur hanterar Azure Databricks Delta Lake-funktionskompatibilitet?.