Umbenennen und Löschen von Spalten mit Delta Lake-Spaltenzuordnung
Azure Databricks unterstützt die Spaltenzuordnung für Delta Lake-Tabellen, die ausschließliche Metadatenänderungen ermöglicht, um Spalten als gelöscht oder umbenannt zu markieren, ohne Datendateien neu zu schreiben. Außerdem können Benutzer die Spalten von Delta-Tabellen mit Zeichen benennen, die in Parquet nicht zulässig sind, wie z. B. Leerzeichen, sodass Benutzer CSV- oder JSON-Daten direkt in Delta erfassen können, ohne Spalten aufgrund bisheriger Zeicheneinschränkungen umbenennen zu müssen.
Wichtig
Tabellen mit aktivierter Spaltenzuordnung können nur in Databricks Runtime 10.4 LTS und höher gelesen werden.
Das Aktivieren der Spaltenzuordnung für Tabellen kann nachgeschaltete Vorgänge unterbrechen, die auf einem Delta-Änderungsdatenfeed basieren. Weitere Informationen finden Sie unter Ändern von Datenfeedeinschränkungen für Tabellen mit aktivierter Spaltenzuordnung.
Das Aktivieren der Spaltenzuordnung für Tabellen kann das Streamen von Lesevorgängen aus der Delta-Tabelle als Quelle unterbrechen, wie z. B. in Delta Live Tables. Weitere Informationen finden Sie unter Streaming mit Spaltenzuordnung und Schemaänderungen.
Aktivieren der Spaltenzuordnung
Für die Spaltenzuordnung sind die folgenden Delta-Protokolle erforderlich:
- Reader Version 2 oder höher.
- Writer Version 5 oder höher.
Für eine Delta-Tabelle mit den erforderlichen Protokollversionen können Sie die Spaltenzuordnung aktivieren, indem Sie delta.columnMapping.mode
auf name
festlegen.
Sie können den folgenden Befehl verwenden, um die Spaltenzuordnung zu aktivieren:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Weitere Informationen finden Sie unter Deaktivieren der Spaltenzuordnung.
Umbenennen einer Spalte
Hinweis
Verfügbar in Databricks Runtime 10.4 LTS und höher.
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie eine Spalte umbenennen:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Weitere Beispiele finden Sie unter Update Delta Lake table schema (Aktualisieren des Delta Lake-Tabellenschemas).
Löschen von Spalten (drop_columns)
Hinweis
Verfügbar in Databricks Runtime 11.3 LTS und höher.
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie eine oder mehrere Spalten löschen:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Ausführlichere Informationen finden Sie unter Update Delta Lake table schema (Aktualisieren des Delta Lake-Tabellenschemas).
Unterstützte Zeichen in Spaltennamen
Wenn die Spaltenzuordnung für eine Delta-Tabelle aktiviert ist, können Sie Leerzeichen sowie eines dieser Zeichen in die Spaltennamen der Tabelle einschließen: ,;{}()\n\t=
.
Streaming mit Spaltenzuordnung und Schemaänderungen
Wichtig
Dieses Feature befindet sich in Databricks Runtime 13.3 LTS und höheren Versionen in der Public Preview.
Sie können einen Speicherort für die Schemanachverfolgung bereitstellen, um das Streaming von Delta-Tabellen mit aktivierter Spaltenzuordnung zu ermöglichen. Dadurch wird ein Problem behoben, das bewirkt, dass nicht additive Schemaänderungen zu unterbrochenen Datenströmen führen können.
Jeder Streaminglesevorgang aus einer Datenquelle muss über einen eigenen schemaTrackingLocation
-Wert verfügen. Der angegebene schemaTrackingLocation
muss sich in dem Verzeichnis befinden, das als checkpointLocation
der Zieltabelle für den Streamingschreibvorgang angegeben ist.
Hinweis
Für Streamingworkloads, die Daten aus mehreren Delta-Quelltabellen kombinieren, müssen Sie eindeutige Verzeichnisse innerhalb des Speicherorts checkpointLocation
für jede Quelltabelle angeben.
Die Option schemaTrackingLocation
wird verwendet, um den Pfad für die Schemanachverfolgung anzugeben, wie im folgenden Codebeispiel gezeigt:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)
Deaktivieren der Spaltenzuordnung
In Databricks Runtime 15.3 und höher können Sie den Befehl DROP FEATURE
verwenden, um die Spaltenzuordnung aus einer Tabelle zu entfernen und das Tabellenprotokoll herabzustufen.