Dela via


Byt namn på och släpp kolumner med Delta Lake-kolumnmappning

Azure Databricks har stöd för kolumnmappning för Delta Lake-tabeller, vilket gör att ändringar med endast metadata kan markera kolumner som borttagna eller omdöpta utan att skriva om datafiler. Det gör det också möjligt för användare att namnge Delta-tabellkolumner med tecken som inte tillåts av Parquet, till exempel blanksteg, så att användarna direkt kan mata in CSV- eller JSON-data i Delta utan att behöva byta namn på kolumner på grund av tidigare teckenbegränsningar.

Viktigt!

Tabeller med kolumnmappning aktiverat kan bara läsas i Databricks Runtime 10.4 LTS och senare.

Aktivering av kolumnmappning i tabeller kan bryta nedströmsåtgärder som förlitar sig på deltaändringsdataflöde. Se Ändra dataflödesbegränsningar för tabeller med kolumnmappning aktiverat.

Aktivering av kolumnmappning på tabeller kan bryta strömmande läsningar från Delta-tabellen som källa, inklusive i Delta Live Tables. Mer information finns i Strömning med kolumnmappning och schemaändringar.

Aktivera kolumnmappning

Kolumnmappning kräver följande Delta-protokoll:

  • Läsarversion 2 eller senare.
  • Skrivarversion 5 eller senare.

För en Delta-tabell med de protokollversioner som krävs kan du aktivera kolumnmappning genom att ange delta.columnMapping.mode till name.

Du kan använda följande kommando för att aktivera kolumnmappning:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.columnMapping.mode' = 'name'
  )

Se Inaktivera kolumnmappning.

Byt namn på en kolumn

Kommentar

Finns i Databricks Runtime 10.4 LTS och senare.

När kolumnmappning är aktiverat för en Delta-tabell kan du byta namn på en kolumn:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Fler exempel finns i Uppdatera Delta Lake-tabellschema.

Ta bort kolumner

Kommentar

Finns i Databricks Runtime 11.3 LTS och senare.

När kolumnmappning är aktiverat för en Delta-tabell kan du släppa en eller flera kolumner:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Mer information finns i Uppdatera Delta Lake-tabellschema.

Tecken som stöds i kolumnnamn

När kolumnmappning är aktiverat för en Delta-tabell kan du inkludera blanksteg och något av dessa tecken i tabellens kolumnnamn: ,;{}()\n\t=.

Direktuppspelning med kolumnmappning och schemaändringar

Viktigt!

Den här funktionen finns i offentlig förhandsversion i Databricks Runtime 13.3 LTS och senare.

Du kan ange en plats för schemaspårning för att aktivera strömning från Delta-tabeller med kolumnmappning aktiverat. Detta löser ett problem där icke-additiva schemaändringar kan resultera i brutna strömmar.

Varje direktuppspelning som läse mot en datakälla måste ha en egen schemaTrackingLocation angiven. Den angivna schemaTrackingLocation måste finnas i den katalog som angetts för måltabellen checkpointLocation för direktuppspelningsskrivning.

Kommentar

För strömmande arbetsbelastningar som kombinerar data från flera Delta-källtabeller måste du ange unika kataloger i checkpointLocation för varje källtabell.

Alternativet schemaTrackingLocation används för att ange sökvägen för schemaspårning, enligt följande kodexempel:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Inaktivera kolumnmappning

I Databricks Runtime 15.3 och senare kan du använda DROP FEATURE kommandot för att ta bort kolumnmappning från en tabell och nedgradera tabellprotokollet.

Kommandot DROP FEATURE kräver en högre protokollversion. Du kan använda följande kommando för att uppgradera tabellläsaren och skrivarversionerna, vilket gör att du kan ta bort kolumnmappning och nedgradera protokollet:

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

Se Drop Delta table features (Ta bort deltatabellfunktioner).