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

Immutability constraints: Use immutability constraints to let you control dynamic table updates. The constraints keep specific rows static while enabling incremental updates to the rest of the table. They prevent unwanted changes to marked data while they let normal refreshes occur for other parts of the table. For more information, see Compréhension des contraintes d’immuabilité.

Performance considerations: Dynamic tables use incremental processing for workloads that support it, which can improve performance by processing only changed data instead of recomputing entire tables. Performance depends on your query patterns and data organization. For guidance on optimizing dynamic table performance, see Performances et optimisation 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

Use target lag to set how fresh you want your data to be. Usually, the table data freshness won’t be more than that far behind the base table data freshness. With target lag, you control how often the table refreshes and how up-to-date the data stays. Target lag affects refresh frequency and compute costs.

For more information, see Comprendre la latence cible des tables dynamiques. For guidance on balancing data freshness with performance, see Optimiser les performances 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.

  • Joins and aggregations: To enable fast queries, you can use dynamic tables to incrementally precompute slow joins and aggregations. For guidance on optimizing these operators for incremental refresh, see Optimiser les requêtes pour l’actualisation incrémentielle.

  • 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.