Renommage et suppression des colonnes avec le mappage de colonnes Delta Lake

Azure Databricks prend en charge le mappage de colonnes pour les tables Delta Lake, ce qui permet de modifier les métadonnées pour marquer les colonnes comme supprimées ou renommées sans réécrire les fichiers de données. Les utilisateurs peuvent également nommer les colonnes de tables Delta à l’aide de caractères non autorisés par Parquet (par exemple des espaces) afin d’ingérer directement des données CSV ou JSON dans Delta sans avoir à renommer les colonnes en raison des contraintes de caractères antérieures.

Important

Les tables pour lesquelles le mappage de colonnes est activé ne peuvent être lues que dans Databricks Runtime 10.4 LTS et les versions ultérieures.

Il est possible que l’activation du mappage de colonnes sur des tables interrompe des opérations en aval qui s’appuient sur le flux des changements de données Delta. Consultez Limitations du flux des changements de données pour des tables sur lesquelles le mappage de colonnes est activé.

Il est possible que l’activation du mappage de colonnes sur des tables interrompe la lecture en continu de la table Delta en tant que source, y compris dans Delta Live Tables. Consultez Diffusion en continu avec un mappage de colonnes et des modifications de schéma.

Activer le mappage de colonnes

Le mappage de colonnes exige les protocoles Delta suivants :

  • Reader version 2 ou supérieure
  • Writer version 5 ou supérieure

Pour une table Delta comportant les versions de protocole requises, vous pouvez activer le mappage de colonnes en définissant delta.columnMapping.mode sur name.

Vous pouvez utiliser la commande suivante pour activer le mappage de colonnes :

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

Consultez Désactiver le mappage de colonnes.

Renommer une colonne

Remarque

Disponible dans Databricks Runtime 10.4 LTS et versions ultérieures.

Lorsque le mappage de colonnes est activé pour une table Delta, vous pouvez renommer une colonne :

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

Pour plus d’exemples, consultez Mettre à jour le schéma de tables Delta Lake.

Supprimer des colonnes

Remarque

Disponible dans Databricks Runtime 11.3 LTS et versions ultérieures.

Lorsque le mappage de colonnes est activé pour une table Delta, vous pouvez supprimer une ou plusieurs colonnes :

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

Pour plus d’informations, consultez Mettre à jour le schéma de tables Delta Lake.

Caractères pris en charge dans les noms de colonnes

Lorsque le mappage de colonnes est activé pour une table Delta, vous pouvez inclure des espaces et l’un des caractères suivants dans les noms de colonnes de la table : ,;{}()\n\t=.

Diffusion en continu avec un mappage de colonnes et des modifications de schéma

Important

Cette fonctionnalité est en préversion publique dans Databricks Runtime 13.3 LTS et versions ultérieures.

Vous pouvez fournir un emplacement de suivi des schémas pour activer le streaming à partir de tables Delta avec un mappage de colonnes activé. Cela permet de surmonter un problème dans lequel des modifications de schéma non additives peuvent entraîner des flux rompus.

Chaque lecture en streaming sur une source de données doit spécifier son propre schemaTrackingLocation. Le schemaTrackingLocation spécifié doit être contenu dans le répertoire défini pour le checkpointLocation de la table cible pour l’écriture en streaming.

Notes

Pour des charges de travail de streaming qui combinent des données de plusieurs tables Delta sources, vous devez spécifier des répertoires uniques dans le checkpointLocation pour chaque table source.

L’option schemaTrackingLocation est utilisée pour spécifier le chemin d’accès du suivi de schéma, comme illustré dans l’exemple de code suivant :

checkpoint_path = "/path/to/checkpointLocation"

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

Désactiver le mappage de colonnes

Dans Databricks Runtime 15.3 et versions ultérieures, vous pouvez utiliser la commande DROP FEATURE pour supprimer le mappage de colonnes d’une table et rétrograder le protocole de table.

Consultez l’article Supprimer des fonctionnalités de table Delta.