Partager via


Élargissement du type

Important

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

Les tables avec extension de type activée vous permettent de modifier les types de données de colonne en un type plus large sans réécrire les fichiers de données sous-jacents. Vous pouvez modifier manuellement les types de colonnes ou utiliser l’évolution du schéma pour faire évoluer les types de colonnes.

L’élargissement du type nécessite Delta Lake. Toutes les tables managées Unity Catalog utilisent Delta Lake par défaut.

Modifications de type prises en charge

Vous pouvez élargir les types en fonction des règles suivantes :

Type de source Types plus larges pris en charge
byte short, int, long
short int, long
int long
float double
decimal decimal avec une plus grande précision et la même échelle
date timestampNTZ

Les modifications de type sont prises en charge pour les colonnes de niveau supérieur et les champs imbriqués dans des structs, des cartes et des tableaux.

Activer l’élargissement du type

Vous pouvez activer l’élargissement du type sur une table existante en définissant la propriété de table delta.enableTypeWidening sur true :

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

Vous pouvez également activer l’élargissement du type lors de la création de table :

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Important

Lorsque vous activez l’élargissement du type, il définit la fonctionnalité de table typeWidening-preview, qui met à niveau les protocoles lecteur et enregistreur. Vous devez utiliser Databricks Runtime 15.2 ou version ultérieure pour interagir avec les tables avec l’élargissement du type activé. Si les clients externes interagissent également avec la table, vérifiez qu’ils prennent en charge cette fonctionnalité de table. Consultez Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?.

Appliquer manuellement une modification de type

Utilisez la commande ALTER COLUMN pour modifier manuellement les types :

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

Cette opération met à jour le schéma de table sans réécrire les fichiers de données sous-jacents.

Élargir les types avec évolution automatique du schéma

L’évolution du schéma fonctionne avec l’élargissement du type pour mettre à jour les types de données dans les tables cibles afin de correspondre au type des données entrantes.

Remarque

Sans l’élargissement du type activée, l’évolution du schéma tente toujours de décomposer en toute sécurité les données pour qu’elles correspondent aux types de colonnes de la table cible. Si vous ne souhaitez pas élargir automatiquement les types de données dans vos tables cibles, désactivez l’élargissement du type avant d’exécuter des charges de travail avec l’évolution du schéma activée.

Pour utiliser l’évolution du schéma pour élargir le type de données d’une colonne, vous devez remplir les conditions suivantes :

  • La commande utilise INSERT ou MERGE INTO.
  • La commande s’exécute avec l’évolution automatique du schéma activée.
  • L’élargissement du type est activé sur la table cible.
  • Le type de colonne source est plus large que le type de colonne cible.
  • L’élargissement du type prend en charge la modification de type.

Les incompatibilités de type qui ne répondent pas à toutes ces conditions suivent les règles d’application de schéma normales. Consultez Application du schéma.

Désactiver la fonctionnalité de table d’élargissement du type

Vous pouvez empêcher l’élargissement accidentel du type sur les tables activées en définissant la propriété sur false :

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

Ce paramètre empêche les modifications de type futures apportées à la table, mais ne supprime pas la fonctionnalité de table d’élargissement du type ni n’annule les changements de type déjà effectués.

Si vous devez supprimer complètement les fonctionnalités de table d’élargissement du type, vous pouvez utiliser la commande DROP FEATURE comme indiqué dans l’exemple suivant :

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

Lors de la suppression de l’élargissement du type, tous les fichiers de données qui ne sont pas conformes au schéma de table actuel sont réécrits. Consultez l’article Supprimer des fonctionnalités de table Delta.