Partager via


Supprimer des fonctionnalités de table Delta

Important

La prise en charge de la suppression de fonctionnalités de table Delta et de la rétrogradation des versions de protocole est disponible en préversion publique dans Databricks Runtime 14.1 et ultérieur.

Azure Databricks offre une prise en charge limitée de la suppression des fonctionnalités de table. Pour supprimer une fonctionnalité de table, effectuez les étapes suivantes :

  • Désactivez les propriétés de table qui utilisent la fonctionnalité de table.
  • Supprimez toutes les traces de la fonctionnalité de table dans les fichiers de données qui servent de base à la table.
  • Supprimez les entrées de transaction qui utilisent la fonctionnalité de table dans le journal des transactions.
  • Rétrogradez le protocole de table.

Quand elle est prise en charge, vous devez utiliser cette fonctionnalité seulement pour prendre en charge la compatibilité avec les versions antérieures de Databricks Runtime, avec Delta Sharing, ou avec d’autres clients de lecteur ou d’enregistreur Delta Lake.

Important

Toutes les opérations DROP FEATURE sont en conflit avec les écritures simultanées.

Les lectures de diffusion en continu échouent lorsqu’elles rencontrent une validation qui modifie les métadonnées d’une table. Si vous souhaitez que le flux continue, vous devez le redémarrer. Pour plus d’informations, consultez Considérations relatives à la production pour les applications Structured Streaming.

Comment puis-je supprimer une fonctionnalité de table Delta ?

Pour supprimer une fonctionnalité de table Delta, vous exécutez une commande ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]. Consultez ALTER TABLE.

Vous devez utiliser Databricks Runtime 14.1 ou ultérieur et disposer de privilèges MODIFY sur la table Delta cible.

Quelles fonctionnalités de table Delta peuvent être supprimées ?

Vous pouvez supprimer les fonctionnalités de table Delta suivantes :

Vous ne pouvez pas supprimer d’autres fonctionnalités de table Delta.

Activer les fonctionnalités de table pour supprimer les fonctionnalités héritées

La commande DROP FEATURE nécessite des versions de protocole qui prennent en charge les lectures et les écritures des fonctionnalités de table. Les fonctionnalités Delta telles que columnMapping et checkConstraints étaient prises en charge dans les versions antérieures du protocole. En fonction des autres fonctionnalités activées sur la table, il peut être nécessaire de mettre à niveau les versions du protocole avant de pouvoir supprimer ces fonctionnalités.

Vous pouvez utiliser la commande suivante pour mettre à niveau les versions du lecteur de table et de l’enregistreur, ce qui vous permet de supprimer le mappage de colonnes et de rétrograder le protocole :

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

Comment les fonctionnalités de table Delta sont-elles supprimées ?

Comme les fonctionnalités de table Delta représentent des protocoles de lecteur et d’enregistreur, elles doivent être complètement absentes du journal des transactions pour que la suppression soit complète. La suppression d’une fonctionnalité se produit en deux étapes et nécessite une certain délai avant d’être complète. Les spécificités de la suppression des fonctionnalités varient selon la fonctionnalité, mais la section suivante fournit une vue d’ensemble générale.

Se préparer à la suppression d’une fonctionnalité de table

Lors de la première phase, l’utilisateur se prépare à supprimer la fonctionnalité de table. Ce qui suit décrit ce qui se passe au cours de cette phase :

  1. L’utilisateur exécute la commande DROP FEATURE.
  2. Les propriétés de table qui activent spécifiquement une fonctionnalité de table ont des valeurs définies pour désactiver la fonctionnalité.
  3. Les propriétés de table qui contrôlent les comportements associés à la fonctionnalité supprimée ont des options définies sur des valeurs par défaut avant l’introduction de la fonctionnalité.
  4. Si nécessaire, les fichiers de données et de métadonnées sont réécrits en respectant les propriétés de table mises à jour.
  5. L’exécution de la commande se termine et elle retourne un message d’erreur informant l’utilisateur qu’il doit attendre 24 heures pour poursuivre la suppression des fonctionnalités.

Après avoir désactivé une fonctionnalité, vous pouvez continuer à écrire dans la table cible avant d’effectuer la rétrogradation du protocole, mais vous ne pouvez pas utiliser la fonctionnalité de table que vous supprimez.

Remarque

Si vous laissez la table dans cet état, les opérations sur la table n’utilisent pas la fonctionnalité de table, mais le protocole prend encore en charge la fonctionnalité de table. Tant que vous n’avez pas terminé la dernière étape de rétrogradation, la table n’est pas lisible par les clients Delta qui ne comprennent pas la fonctionnalité de table.

Rétrograder le protocole et supprimer une fonctionnalité de table

Pour supprimer la fonctionnalité de table, vous devez supprimer tout l’historique des transactions associé à la fonctionnalité et rétrograder le protocole.

  1. Après au moins 24 heures, l’utilisateur exécute à nouveau la commande DROP FEATURE avec la clause TRUNCATE HISTORY.
  2. Le client vérifie qu’aucune transaction dans le seuil de rétention spécifié n’utilise la fonctionnalité de table, puis tronque l’historique de la table à ce seuil.
  3. Le protocole est rétrogradé, ce qui supprime la fonctionnalité de table.
  4. Si les fonctionnalités de table présentes dans la table peuvent être représentées par une version de protocole héritée, le minReaderVersion et le minWriterVersion pour la table sont rétrogradés à la version la plus basse qui prend en charge exactement toutes les fonctionnalités restantes utilisées par la table Delta.

Important

L’exécution de ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY supprime toutes les données du journal des transactions antérieures aux dernières 24 heures. Après avoir supprimé une fonctionnalité de table Delta, vous n’avez pas accès à l’historique des tables ni aux déplacements dans le temps.

Consultez Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?.