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.