Byt namn på och släpp kolumner med Delta Lake-kolumnmappning
Viktigt
Den här funktionen finns i offentlig förhandsversion.
Azure Databricks stöder kolumnmappning för Delta Lake-tabeller, vilket möjliggör ändringar av endast metadata för att 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
Om du aktiverar kolumnmappning kan du också använda slumpmässiga filprefix, vilket gör att du inte kan utforska data med hive-partitionering. Se Dela partitioneringsstrategier för Delta Lake och Parquet?.
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.
Om du aktiverar kolumnmappning i tabeller kan strömningsläsningen från Delta-tabellen brytas som källa, inklusive i Delta Live Tables. Se Direktuppspelning med kolumnmappning och schemaändringar.
Så här aktiverar du delta lake-kolumnmappning
Viktigt
Om du aktiverar kolumnmappning för en tabell uppgraderas Delta-tabellversionen. Den här protokolluppgradering kan inte ångras. Tabeller med kolumnmappning aktiverat kan bara läsas i Databricks Runtime 10.2 och senare.
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 uppgradera tabellversionen och aktivera kolumnmappning:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '2',
'delta.minWriterVersion' = '5',
'delta.columnMapping.mode' = 'name'
)
Observera
Du kan inte inaktivera kolumnmappning när du har aktiverat den. Om du försöker ange 'delta.columnMapping.mode' = 'none'
får du ett fel.
Byt namn på en kolumn
Observera
Tillgänglig i Databricks Runtime 10.2 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
Observera
Tillgänglig i Databricks Runtime 11.0 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 är i offentlig förhandsversion i Databricks Runtime 13.1 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äss mot en datakälla måste ha en egen schemaTrackingLocation
angiven. Den angivna schemaTrackingLocation
måste finnas i den katalog som anges för måltabellen checkpointLocation
för direktuppspelningsskrivning.
Observera
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")
)