Condividi tramite


Rinominare ed eliminare colonne con mapping di colonne Delta Lake

Azure Databricks supporta il mapping delle colonne per le tabelle Delta Lake, che consente di modificare solo i metadati per contrassegnare le colonne come eliminate o rinominate senza riscrivere i file di dati. Consente inoltre agli utenti di denominare le colonne della tabella Delta usando caratteri non consentiti da Parquet, ad esempio spazi, in modo che gli utenti possano inserire direttamente dati CSV o JSON in Delta senza dover rinominare le colonne a causa di vincoli di caratteri precedenti.

Importante

Le tabelle con mapping delle colonne abilitate possono essere lette solo in Databricks Runtime 10.4 LTS e versioni successive.

L'abilitazione del mapping delle colonne nelle tabelle potrebbe suddividere le operazioni downstream che si basano sul feed di dati delle modifiche Delta. Vedere Modificare le limitazioni del feed di dati per le tabelle con mapping delle colonne abilitate.

L'abilitazione del mapping delle colonne nelle tabelle potrebbe interrompere le letture in streaming dalla tabella Delta come origine, incluse le tabelle Live Delta. Vedere Streaming con mapping di colonne e modifiche dello schema.

Abilitare il mapping delle colonne

Per il mapping delle colonne sono necessari i protocolli Delta seguenti:

  • Lettore versione 2 o successiva.
  • Writer versione 5 o successiva.

Per una tabella Delta con le versioni del protocollo necessarie, è possibile abilitare il mapping delle colonne impostando delta.columnMapping.mode su name.

Per abilitare il mapping delle colonne, è possibile usare il comando seguente:

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

Vedere Disabilitare il mapping delle colonne.

Rinominare una colonna

Nota

Disponibile in Databricks Runtime 10.4 LTS e versioni successive.

Quando il mapping delle colonne è abilitato per una tabella Delta, è possibile rinominare una colonna:

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

Per altri esempi, vedere Aggiornare lo schema della tabella Delta Lake.

Eliminazione delle colonne

Nota

Disponibile in Databricks Runtime 11.3 LTS e versioni successive.

Quando il mapping delle colonne è abilitato per una tabella Delta, è possibile eliminare una o più colonne:

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

Per altri dettagli, vedere Aggiornare lo schema della tabella Delta Lake.

Caratteri supportati nei nomi delle colonne

Quando il mapping delle colonne è abilitato per una tabella Delta, è possibile includere spazi e uno di questi caratteri nei nomi delle colonne della tabella: ,;{}()\n\t=.

Streaming con mapping di colonne e modifiche dello schema

Importante

Questa funzionalità è disponibile in anteprima pubblica in Databricks Runtime 13.3 LTS e versioni successive.

È possibile fornire un percorso di rilevamento dello schema per abilitare lo streaming da tabelle Delta con mapping di colonne abilitato. Questo risolve un problema in cui le modifiche dello schema non additivi potrebbero causare flussi interrotti.

Ogni flusso letto su un'origine dati deve avere un proprio schemaTrackingLocation specificato. L'oggetto specificato schemaTrackingLocation deve essere contenuto all'interno della directory specificata per la checkpointLocation tabella di destinazione per la scrittura in streaming.

Nota

Per i carichi di lavoro di streaming che combinano dati da più tabelle Delta di origine, è necessario specificare directory univoche all'interno di checkpointLocation per ogni tabella di origine.

L'opzione schemaTrackingLocation viene usata per specificare il percorso per il rilevamento dello schema, come illustrato nell'esempio di codice seguente:

checkpoint_path = "/path/to/checkpointLocation"

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

Disabilitare il mapping delle colonne

In Databricks Runtime 15.3 e versioni successive è possibile usare il comando per rimuovere il mapping delle colonne da una tabella e effettuare il DROP FEATURE downgrade del protocollo di tabella.

Il DROP FEATURE comando richiede una versione di protocollo superiore. È possibile usare il comando seguente per aggiornare le versioni del lettore di tabelle e del writer, che consente di eliminare il mapping delle colonne e effettuare il downgrade del protocollo:

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

Vedere Eliminare le funzionalità della tabella Delta.