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.
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).
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för