Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Radspårning är tillgängligt i Databricks Runtime 14.1 och senare och tilldelar stabila rad-ID:er och radincheckningsversioner till varje rad, vilket aktiverar radnivåspårning. Vissa inkrementella uppdateringar för materialiserade vyer kräver den här funktionen.
Alla Apache Iceberg v3-tabeller innehåller radspårning. Se Använda Apache Iceberg v3-funktioner. För Delta Lake-tabeller måste du uttryckligen aktivera radspårning.
Note
Om du aktiverar radspårning uppgraderas protokollet för tabellskrivare och kan påverka kompatibiliteten med externa Delta Lake-klienter. Se Delta Lake-funktionskompatibilitet och protokoll.
Aktivera radspårning i Delta Lake-tabeller
Om du vill aktivera radspårning i en Delta Lake-tabell anger du tabellegenskapen delta.enableRowTracking = true när du skapar tabellen:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Om du vill aktivera radspårning i en befintlig Delta Lake-tabell använder du följande exempel:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Important
Genom att aktivera radspårning på befintliga tabeller tilldelas automatiskt rad-ID:n och radernas versionsnummer till alla befintliga rader i tabellen. Den här processen kan leda till att flera nya versioner av tabellen skapas och tar lång tid att slutföra.
Warning
Om tabellen är ett mål för kontinuerliga skrivningar, till exempel strukturerade strömningsarbetsbelastningar, pausar du skrivåtgärderna innan radspårning aktiveras och återupptas när åtgärden har slutförts. Att använda ALTER TABLE för att aktivera radspårning uppdaterar tabellmetadata, vilket gör att eventuella samtidiga skrivåtgärder misslyckas med en MetadataChangedException under den tid som åtgärden pågår. Se Konfliktundantag.
Kloning av en tabell skapar en separat historik, så rad-ID:t och radincheckningsversionerna på klonade tabeller matchar inte dem i den ursprungliga tabellen.
Metadatafält
Radspårning lägger till två dolda metadatafält i tabellen. Du kan uttryckligen lägga till dessa fält i frågan för att returnera värdena.
| Kolumnnamn | Type | Värden | Explanation |
|---|---|---|---|
_metadata.row_id |
Long | Den unika identifieraren för raden. | En rad behåller samma ID när den ändras med hjälp av ett MERGE- och UPDATE-uttalande. |
_metadata.row_commit_version |
Long | Delta-loggen eller tabellversionen där raden senast infogades eller uppdaterades. | En rad tilldelas en ny version varje gång den ändras med hjälp av ett MERGE- eller UPDATE-uttalande. |
Vissa åtgärder lagrar dessa metadatafält med hjälp av transaktionsloggen. Om du kör OPTIMIZE eller REORG åtgärder i en tabell med radspårning aktiverat skrivs datafiler om för att lagra dessa fält.
Inaktivera radspårning i Delta Lake-tabeller
Om du vill inaktivera radspårning i en Delta Lake-tabell anger du tabellegenskapen till false.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Important
Om du inaktiverar radspårning tar du inte bort motsvarande tabellfunktion och nedgraderar inte tabellprotokollversionen. Det tar inte heller bort metadatafälten från måltabellen. Om du vill ta bort tabellfunktionen helt och nedgradera protokollet använder du DROP FEATURE. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
När radspårningen har inaktiverats är de genererade rad-ID:n inte längre tillförlitliga för att spåra unika rader.
Limitations
Metadatafälten för rad-ID:n och radcommit-versioner kan inte nås vid läsning av ändringsdataflödet. Se Använda ändringsdataflöde på Azure Databricks.