Verwenden der Zeilennachverfolgung für Delta-Tabellen
Die Delta Lake-Zeilennachverfolgung ermöglicht Azure Databricks das Nachverfolgen der Datenherkunft auf Zeilenebene in einer Delta-Tabelle. Dieses Feature ist für einige inkrementelle Updates für materialisierte Sichten erforderlich.
Wichtig
Die Delta Lake-Zeilennachverfolgung ist in Databricks Runtime 14.1 und höher verfügbar.
Die Zeilennachverfolgung ist ein Tabellenfeature und verwendet eine höhere Tabellen-Writer-Protokollversion als einige Delta Lake-Clients. Tabellenprotokollversionen können nicht herabgestuft werden, und Tabellen mit aktivierter Zeilennachverfolgung können von Delta Lake-Clients, die nicht alle aktivierten Features der Delta-Writer-Protokolltabelle unterstützen, nicht geschrieben werden. Weitere Informationen finden Sie unter Wie verwaltet Azure Databricks die Kompatibilität von Delta Lake-Features?.
Aktivieren der Zeilennachverfolgung
Sie müssen die Zeilennachverfolgung explizit aktivieren, indem Sie die Tabelleneigenschaft delta.enableRowTracking = true
festlegen.
Sie können dies während der Tabellenerstellung tun, wie im folgenden Beispiel gezeigt:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Sie können eine vorhandene Tabelle ändern, um die Zeilennachverfolgung zu aktivieren, wie im folgenden Beispiel gezeigt:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Wichtig
Durch das Aktivieren der Zeilennachverfolgung für vorhandene Tabellen werden automatisch Zeilen-IDs und Zeilen-Commitversionen allen vorhandenen Zeilen in der Tabelle zugewiesen. Dieser Vorgang kann dazu führen, dass mehrere neue Versionen der Tabelle erstellt werden, und eine erhebliche Zeit in Anspruch nehmen.
Durch das Klonen einer Delta-Tabelle wird ein separater Verlauf erstellt, sodass die Zeilen-IDs und Zeilen-Commitversionen in geklonten Tabellen nicht mit denen in der ursprünglichen Tabelle übereinstimmen.
Was ist das Schema der Metadatenfelder für die Zeilennachverfolgung?
Die Zeilennachverfolgung fügt der Tabelle zwei ausgeblendete Metadatenfelder hinzu. Sie können diese Felder explizit zu Ihrer Abfrage hinzufügen, um die Werte zurückzugeben.
Spaltenname | type | Werte | Erklärung |
---|---|---|---|
_metadata.row_id |
Long | Der eindeutige Bezeichner der Zeile. | Eine Zeile behält dieselbe ID bei, wenn sie mithilfe einer MERGE - oder UPDATE -Anweisung geändert wird. |
_metadata.row_commit_version |
Long | Die Delta-Protokoll- oder Tabellenversion, bei der die Zeile zuletzt eingefügt oder aktualisiert wurde. | Einer Zeile wird immer dann eine neue Version zugewiesen, wenn sie mithilfe einer MERGE - oder UPDATE -Anweisung geändert wird. |
Einige Vorgänge speichern diese Metadatenfelder mithilfe des Transaktionsprotokolls. Das Ausführen von OPTIMIZE
- oder REORG
-Vorgängen in einer Tabelle mit aktivierter Zeilennachverfolgung schreibt Datendateien neu, um diese Felder zu speichern.
Deaktivieren der Zeilennachverfolgung
Sie können die Zeilennachverfolgung deaktivieren, indem Sie die Tabelleneigenschaft auf false
festlegen.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Wichtig
Durch das Deaktivieren der Zeilennachverfolgung wird das entsprechende Tabellenfeature nicht entfernt und die Tabellenprotokollversion wird nicht herabgestuft. Außerdem werden die Metadatenfelder nicht aus der Zieltabelle entfernt.
Wenn die Zeilennachverfolgung deaktiviert ist, sind die generierten Zeilen-IDs nicht mehr zuverlässig zum Nachverfolgen eindeutiger Zeilen.
Begrenzungen
Auf die Metadatenfelder der Zeilen-IDs und Zeilen-Commitversionen kann beim Lesen des Änderungsdatenfeeds nicht zugegriffen werden. Siehe Verwenden des Delta Lake-Änderungs-Datenfeeds in Azure Databricks.