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")
)