Comprendre la latence cible des tables dynamiques¶
L’actualisation des tables dynamiques est déclenchée par la latence cible des données, qui détermine son degré d’obsolescence. Vous pouvez définir une latence cible fixe ou définir la table dynamique sur DOWNSTREAM, de sorte que son délai d’actualisation dépende des tables dynamiques qui en dépendent.
La latence cible d’une table dynamique est mesurée par rapport aux tables dynamiques situées à la racine du graphique, et non par rapport aux tables dynamiques situées directement en amont. Pour voir le graphique des tables liées à votre table dynamique, voir Voir le graphique des tables connectées à vos tables dynamiques.
Snowflake planifie les actualisations de manière à ce que la latence réelle de vos tables dynamiques reste inférieure à la latence cible. La durée de chaque actualisation dépend de la requête, du modèle de données et de la taille de l’entrepôt. Lorsque vous choisissez une latence cible, tenez compte du temps nécessaire pour actualiser chaque table dynamique dans une chaîne jusqu’à la racine. Si vous ne le faites pas, certaines actualisations risquent d’être ignorées, ce qui entraînera une latence plus importante.
Types de latence cible¶
Vous spécifiez la latence cible de l’une des manières suivantes. La latence cible est inversement proportionnelle à la fréquence d’actualisation des tables dynamiques : des actualisations fréquentes impliquent une latence plus faible.
Mesure du niveau d’actualisation : spécifie le délai maximum pendant lequel le contenu de la table dynamique doit être décalé par rapport aux mises à jour des tables de base.
L’exemple suivant paramètre
my_dynamic_tablepour une actualisation et un maintien du niveau d’actualisation toutes les heures :ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = '1 hour';
Aval : Spécifie que la table dynamique doit être actualisée à la demande lorsque les tables en aval (tables qui dépendent de cette table) sont actualisées. Cette actualisation peut être déclenchée par l’initialisation à la création, l’actualisation manuelle, ou l’actualisation planifiée d’une table en aval.
Lorsque
refresh_modeest défini surdownstream, la planification d’actualisation d’une table dynamique est déterminée par la latence la plus exigeante (la plus courte) de ses dépendances en aval. Par exemple, si une table dépendante en aval nécessite des données ne datant pas de plus de 10 minutes et qu’une autre table dépendante en aval nécessite des données ne datant pas de plus d’une heure, la planification d’actualisation de cette table dynamique sera toutes les 10 minutes, car il s’agit du décalage le plus court de ses dépendances en aval.Dans l’exemple suivant, la
my_dynamic_tableest définie pour se rafraîchir en fonction de la latence cible de ses tables dynamiques en aval. Simy_dynamic_tablen’a pas de tables dynamiques qui en dépendent, elle ne sera pas actualisée.ALTER DYNAMIC TABLE my_dynamic_table SET TARGET_LAG = DOWNSTREAM;
Pour d’autres exemples de latence cible en aval, consultez Exemple : latence cible pour les chaînes de tables dynamiques.
Comment Snowflake planifie les actualisations¶
Snowflake planifie les actualisations légèrement plus tôt que la latence cible pour permettre à l’actualisation de se terminer. Par exemple, si vous définissez la latence cible à 5 minutes, la table risque d’être actualisée plus fréquemment que toutes les cinq minutes. Les intervalles d’actualisation réels sont souvent plus courts que la latence spécifiée.
Note
La latence cible est une cible, et non une garantie. Snowflake tente de conserver les données dans la latence cible, mais la latence réelle peut dépasser la cible en raison de facteurs tels que la taille de l’entrepôt, le volume de données et la complexité de la requête.
Pour obtenir des conseils sur l’ajustement de la latence cible pour votre charge de travail, consultez Modifier l’entrepôt ou la latence cible pour les tables dynamiques. Pour plus d’informations sur l’optimisation de votre latence cible, consultez Identifier la latence cible appropriée.
Comment les relations en amont et en aval affectent la latence cible¶
Le diagramme suivant illustre les opérations de suspension, de reprise et d’actualisation manuelle dans le contexte des relations en amont et en aval avec d’autres tables dynamiques.
Le diagramme représente un pipeline de données déclaratif simple construit avec des tables dynamiques :
DT2est décrite comme en aval deDT1parce qu’elle dépend de cette table dynamique, et en amont deDT3, qui en dépend.DT3est en aval deDT2etDT1, car elle dépend directement deDT2et indirectement deDT1.DT1est directement ou indirectement en amont des autres tables dynamiques.
Exemple : latence cible pour les chaînes de tables dynamiques¶
Prenons l’exemple suivant : une table dynamique (DT2) lit les données d’une autre table dynamique (DT1) pour matérialiser son contenu. Dans ce scénario, un rapport consomme les données de DT2 via une requête.
Les résultats suivants sont possibles, en fonction de la manière dont chaque table dynamique spécifie sa latence :
|
|
Actualiser les résultats |
|---|---|---|
|
|
|
|
|
Ce scénario doit être évité. La requête de rapport ne recevra aucune donnée. DT1 est fréquemment actualisée et |
|
|
|
|
|
Ni |