Tables dynamiques

Les tables dynamiques sont des tables qui s’actualisent automatiquement en fonction d’une requête définie et du niveau d’actualisation de la cible, ce qui simplifie la transformation des données et la gestion du pipeline sans nécessiter de mises à jour manuelles ou de planification personnalisée.

Lorsque vous créez une table dynamique, vous définissez une requête qui spécifie comment les données doivent être transformées à partir des objets de base. Snowflake gère la planification d’actualisation de la table dynamique et met à jour la table automatiquement pour refléter les modifications apportées aux objets de base en fonction de la requête.

Considérations clés et meilleures pratiques générales

Contraintes d’immuabilité : Utilisez des contraintes d’immuabilité pour vous permettre de contrôler les mises à jour des tables dynamiques. Les contraintes gardent des lignes spécifiques statiques tout en permettant des mises à jour incrémentielles du reste de la table. Elles empêchent les modifications non souhaitées aux données marquées et permettent aux actualisations normales de se produire pour d’autres parties de la table. Pour plus d’informations, voir Créer des tables dynamiques avec des limites d’immuabilité.

Considérations en matière de performances : les tables dynamiques utilisent un traitement incrémentiel pour les charges de travail qui la prennent en charge, ce qui peut améliorer les performances en recalculant uniquement les données qui ont changé, plutôt qu’en effectuant une actualisation complète. Pour plus d’informations, voir Meilleures pratiques pour optimiser les performances des tables dynamiques.

Décomposer les tables dynamiques complexes : décomposez votre pipeline en tables dynamiques plus petites et ciblées pour améliorer les performances et simplifier le dépannage. Pour plus d’informations, voir Bonnes pratiques pour la création de tables dynamiques.

Fonctionnement des tables dynamiques

Snowflake exécute la requête de définition spécifiée dans votre CREATE DYNAMIC TABLE et vos tables dynamiques sont mises à jour via un processus d’actualisation automatisé.

Le schéma suivant montre comment ce processus calcule les modifications apportées aux objets de base et les fusionne dans la table dynamique en utilisant les ressources de calcul associées à la table.

Représentation visuelle du processus d'actualisation automatisé entre les objets de base et les tables dynamiques

Latence cible

Utilisez la latence cible pour définir le niveau d’actualisation de vos données. En général, le niveau d’actualisation des données de la table ne sera pas si éloigné du niveau d’actualisation des données de la table de base. Avec la latence cible, vous contrôlez la fréquence d’actualisation de la table et la manière dont les données restent à jour.

Pour plus d’informations, voir Comprendre la latence cible des tables dynamiques.

Modes d’actualisation des tables dynamiques

Les tables dynamiques visent à s’actualiser dans la latence cible que vous spécifiez. Par exemple, une latence cible de 5 minutes garantit que les données de la table dynamique n’ont pas plus de 5 minutes de retard sur les données mises à jour de la table de base. Vous définissez le mode d’actualisation lorsque vous créez la table et, par la suite, les actualisations peuvent être effectuées selon une planification ou manuellement.

Pour plus d’informations, voir Comprendre l’initialisation et l’actualisation des tables dynamiques et Actualiser manuellement les tables dynamiques.

Quand utiliser les tables dynamiques

Les tables dynamiques sont idéales pour les scénarios suivants :

  • Vous souhaitez matérialiser les résultats de la requête sans écrire de code personnalisé.

  • Vous souhaitez éviter de suivre manuellement les dépendances de données et de gérer des planifications d’actualisation. Les tables dynamiques vous permettent de définir les résultats du pipeline de manière déclarative, sans gérer manuellement les étapes de transformation.

  • Vous souhaitez enchaîner ensemble plusieurs tables pour les transformations de données dans un pipeline.

  • Vous n’avez pas besoin de contrôle précis sur les planifications d’actualisation, et il vous suffit de spécifier un niveau d’actualisation cible pour le pipeline. Snowflake gère l’orchestration des actualisations de données, y compris la planification et l’exécution, en fonction de vos exigences d’actualisation cibles.

Exemples de cas d’utilisation

  • Dimensions à changement lent (SCDs) : les tables dynamiques peuvent être utilisées pour mettre en œuvre les types 1 et 2 de SCDs en lisant un flux de modifications et en utilisant des fonctions de fenêtre sur des clés par enregistrement ordonnées par un horodatage des modifications. Cette méthode permet de gérer les insertions, les suppressions et les mises à jour qui se produisent dans le désordre, ce qui simplifie la création de SCDs. Pour plus d’informations, voir Changement lent des dimensions avec les tables dynamiques.

  • Jointures et agrégations : vous pouvez utiliser des tables dynamiques pour précalculer de manière incrémentielle les jointures lentes et les agrégations afin de permettre des requêtes rapides.

  • Passage du lot à la diffusion en continu : les tables dynamiques permettent de passer en toute transparence du lot à la diffusion en continu avec une seule commande ALTER DYNAMIC TABLE. Vous pouvez contrôler la fréquence d’actualisation dans votre pipeline afin d’équilibrer le coût et le niveau d’actualisation des données.