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'
)
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.
Se Drop Delta table features (Ta bort deltatabellfunktioner).