Dela via


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 -UPDATEinstruktion.

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.