Använda radspårning för Delta-tabeller
Med Delta Lake-radspårning kan Azure Databricks spåra ursprung på radnivå i en Delta-tabell. Den här funktionen krävs för vissa inkrementella uppdateringar för materialiserade vyer.
Viktigt!
Delta Lake-radspårning är tillgängligt i Databricks Runtime 14.1 och senare.
Radspårning är en tabellfunktion och använder ett mer avancerat tabellskrivarprotokoll än vissa Delta Lake-klienter. Det går inte att nedgradera tabellprotokollversioner och tabeller med radspårning aktiverat kan inte skrivas av Delta Lake-klienter som inte stöder alla aktiverade Delta Writer-protokolltabellfunktioner. Se Hur hanterar Azure Databricks funktionskompatibilitet med Delta Lake?.
Aktivera radspårning
Du måste uttryckligen aktivera radspårning genom att ange tabellegenskapen delta.enableRowTracking = true
.
Du kan göra detta när tabellen skapas, som i följande exempel:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Du kan ändra en befintlig tabell för att aktivera radspårning, som i följande exempel:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Viktigt!
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 kan ta lång tid.
Kloning av en Delta-tabell skapar en separat historik, så rad-ID:t och radincheckningsversionerna på klonade tabeller matchar inte dem i den ursprungliga tabellen.
Vad är schemat för radspårningsmetadatafälten?
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 | Typ | Värden | Förklaring |
---|---|---|---|
_metadata.row_id |
Long | Den unika identifieraren för raden. | En rad behåller samma ID när den ändras med hjälp av en MERGE -instruktion UPDATE . |
_metadata.row_commit_version |
Long | Delta-loggen eller tabellversionen där raden senast infogades eller uppdaterades. | En rad tilldelas en ny version när den ändras med hjälp av en eller MERGE -UPDATE instruktion. |
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
Du kan inaktivera radspårning genom att ange tabellegenskapen till false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Viktigt!
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.
När radspårning har inaktiverats är rad-ID:n som genereras inte längre tillförlitliga för att spåra unika rader.
Begränsningar
Det går inte att komma åt metadatafälten för rad-ID:t och radincheckningsversionerna när du läser ändringsdataflödet. Se Använda Delta Lake-ändringsdataflöde i Azure Databricks.