Freigeben über


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.

Für den Befehl DROP FEATURE ist eine höhere Protokollversion erforderlich. Sie können den folgenden Befehl verwenden, um die Tabellenleser- und -schreiberversionen zu aktualisieren, wodurch Sie die Spaltenzuordnung aufgeben und das Protokoll herabstufen können:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '3',
    'delta.minWriterVersion' = '7'
  )

Siehe Delta-Tabellenfeatures ablegen.