Partage via


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

Important

Cette fonctionnalité est disponible en préversion publique.

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

L’activation du mappage de colonnes active également des préfixes de fichiers aléatoires, ce qui supprime la possibilité d’explorer des données en utilisant un partitionnement de style Hive. Consultez Les stratégies de partitionnement de Delta Lake et Parquet sont-elles mises en commun ?.

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.

Activation du mappage de colonnes Delta Lake

Important

L’activation du mappage de colonnes sur une table met à niveau la version de la table Delta. Cette mise à niveau de protocole est irréversible. 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.

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.

Utilisez la commande suivante pour mettre à niveau la version de la table et activer le mappage de colonnes :

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '2',
    'delta.minWriterVersion' = '5',
    'delta.columnMapping.mode' = 'name'
  )

Notes

Il n’est pas possible de désactiver le mappage de colonnes après l’avoir activé. Si vous essayez de définir 'delta.columnMapping.mode' = 'none', vous obtenez une erreur.

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