Utiliser le suivi des lignes pour les tables Delta
Le suivi des lignes Delta Lake permet à Azure Databricks de suivre la traçabilité au niveau des lignes dans une table Delta. Cette fonctionnalité est nécessaire pour certaines mises à jour incrémentielles pour les vues matérialisées.
Important
Le suivi des lignes Delta Lake est disponible dans Databricks Runtime 14.1 et versions ultérieures.
Le suivi des lignes est une fonctionnalité de table et utilise un protocole d’enregistreur de table supérieur à certains clients Delta Lake. Les versions de protocole de table ne peuvent pas être rétrogradées, et les tables avec le suivi des lignes activé ne sont pas accessibles en écriture par les clients Delta Lake qui ne prennent pas en charge toutes les fonctionnalités de table de protocole enregistreur Delta activées. Consultez Comment Azure Databricks gère-t-il la compatibilité des fonctionnalités Delta Lake ?.
Activer le suivi des lignes
Vous devez activer explicitement le suivi des lignes en définissant la propriété de table delta.enableRowTracking = true
.
Vous pouvez le faire lors de la création d’une table, comme dans l’exemple suivant :
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Vous pouvez modifier une table existante pour activer le suivi des lignes, comme dans l’exemple suivant :
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Important
L’activation du suivi des lignes sur les tables existantes attribue automatiquement des ID de ligne et des versions de validation de ligne à toutes les lignes existantes de la table. Ce processus peut entraîner la création de plusieurs nouvelles versions de la table et peut prendre beaucoup de temps.
Le clonage d’une table Delta crée un historique distinct, de sorte que les ID de ligne et les versions de validation de ligne sur les tables clonées ne correspondent pas à ceux de la table d’origine.
Quel est le schéma des champs de métadonnées de suivi des lignes ?
Le suivi des lignes ajoute deux champs de métadonnées masqués à la table. Vous pouvez ajouter explicitement ces champs à votre requête pour retourner les valeurs.
Nom de la colonne | Type | Valeurs | Explication |
---|---|---|---|
_metadata.row_id |
Long | Identificateur unique de la ligne. | Une ligne conserve le même ID chaque fois qu’elle est modifiée à l’aide d’une instruction MERGE ou UPDATE . |
_metadata.row_commit_version |
Long | Version du journal ou de la table Delta à laquelle la ligne a été insérée ou mise à jour pour la dernière fois. | Une ligne reçoit une nouvelle version chaque fois qu’elle est modifiée à l’aide d’une instruction MERGE ou UPDATE . |
Certaines opérations stockent ces champs de métadonnées à l’aide du journal des transactions. L’exécution d’opérations OPTIMIZE
ou REORG
sur une table avec le suivi des lignes activé réécrit les fichiers de données pour stocker ces champs.
Désactiver le suivi des lignes
Vous pouvez désactiver le suivi des lignes en définissant la propriété de table sur false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Important
La désactivation du suivi des lignes ne supprime pas la fonctionnalité de table correspondante et ne rétrograde pas la version du protocole de table. Elle ne supprime pas non plus les champs de métadonnées de la table cible.
Avec le suivi des lignes désactivé, les ID de ligne générés ne sont plus fiables pour le suivi des lignes uniques.
Limites
Les ID de ligne et les champs de métadonnées de validation de ligne ne sont pas accessibles lors de la lecture du flux de données de modification. Consultez Utiliser le flux des changements de données Delta Lake sur Azure Databricks.