Diagnostic des problèmes courants liés à l’actualisation des tables dynamiques

Ce sujet aborde les solutions de dépannage des tables dynamiques qui ne s’actualisent pas comme prévu :

Certaines actions peuvent être restreintes en raison de limitations concernant l’utilisation de tables dynamiques ou si vous ne disposez pas des privilèges nécessaires. Pour plus d’informations, voir Limites des tables dynamiques et Contrôle de l’accès aux tables dynamiques.

Si vous rencontrez un problème qui n’est pas répertorié ici, contactez le support Snowflake.

Problème

Solution

Ma table dynamique utilise une actualisation complète au lieu d’une actualisation incrémentielle.

Le mode d’actualisation d’une table dynamique est déterminé au moment de la création et est immuable par la suite. S’il n’est pas spécifié explicitement, le mode d’actualisation est par défaut AUTO , ce qui sélectionne un mode d’actualisation en fonction de divers facteurs tels que la complexité de la requête ou les constructions, opérateurs ou fonctions non pris en charge.

Pour un comportement cohérent entre les versions de Snowflake, définissez explicitement le mode d’actualisation de toutes les tables dynamiques. Par exemple, si vous souhaitez que vos tables dynamiques soient actualisées uniquement de manière incrémentielle, vous devez définir explicitement le mode d’actualisation sur INCREMENTAL lors de leur création, en gardant à l’esprit qu’il peut y avoir des limitations relatives à l’utilisation de l’actualisation incrémentielle. Pour plus d’informations, voir Bonnes pratiques pour le choix des modes d’actualisation des tables dynamiques.

En utilisant un rôle doté des privilèges nécessaires, vous pouvez vérifier le mode d’actualisation à l’aide de l’une des méthodes suivantes :

  • Avec SQL : exécutez l’instruction SHOW DYNAMIC TABLES. Dans le résultat, la colonne text indique le mode d’actualisation spécifié par l’utilisateur, la colonne refresh_mode indique le mode d’actualisation réel et la colonne refresh_mode_reason indique pourquoi le mode d’actualisation réel a été choisi.

  • Avec Snowsight : dans le menu de navigation, sélectionnez Monitoring » Dynamic Tables, puis votre table dynamique. Vous pouvez voir le mode d’actualisation de la tabler dynamique dans l’onglet Table Details.

L’actualisation incrémentielle de ma table dynamique est lente.

Les performances d’actualisation d’une table dynamique reposent sur des hypothèses spécifiques concernant la charge de travail ou les données qu’elle traite.

Utilisez Refresh History pour voir la variance ou repérer les valeurs aberrantes :

  1. Connectez-vous à Snowsight.

  2. Dans la navigation, accédez à Monitoring » Dynamic Tables.

  3. Sélectionnez votre table dynamique et allez dans l’onglet Refresh History.

  4. Utilisez les durées d’actualisation de votre table dynamique au cours des dernières 24 heures pour résoudre le problème.

Ma table dynamique exécute une actualisation vide, mais je vois un coût.

Les actualisations qui ne produisent aucune nouvelle ligne nette (c’est-à-dire aucune ligne ajoutée, mise à jour ou supprimée) consomment des ressources de l’entrepôt lorsqu’elles sont associées à des changements dans l’un des objets en amont référencés par la table dynamique.

Par exemple, si l’entrepôt virtuel associé est suspendu et qu’aucun changement dans les objets de base n’est identifié, l’entrepôt virtuel suspendu ne reprend pas et aucun crédit n’est consommé. C’est ce que l’on appelle une actualisation NO_DATA. Inversement, si des changements sont identifiés, l’entrepôt virtuel est automatiquement repris pour traiter les mises à jour, ce qui consomme des ressources de l’entrepôt même si le résultat net est zéro ligne appliquée à la table dynamique.

Si vous constatez un coût alors que vous n’avez apporté aucune modification à votre table dynamique, cela peut être dû à une modification de votre table source. Vous pouvez utiliser l’onglet Refresh History dans Snowsight pour vérifier si les crédits de l’entrepôt virtuel ont été consommés :

  1. Connectez-vous à Snowsight.

  2. Dans le menu de navigation, sélectionnez Monitoring » Dynamic Tables.

  3. Sélectionnez votre table dynamique et allez dans l’onglet Refresh History.

  4. Cochez la case Warehouse used only pour voir les actualisations qui ont utilisé l’entrepôt pour se mettre à jour.

Pour plus d’informations, voir Compréhension du coût des tables dynamiques.

Ma table dynamique se réinitialise.

Il se peut que votre table dynamique se réinitialise pour l’une des raisons suivantes :

  • Une ou plusieurs entrées de la table dynamique sont remplacées. Par exemple, si votre table dynamique est définie sur une vue et que vous remplacez la vue, la table dynamique doit être réinitialisée.

  • Si le schéma des entrées a changé et que votre table dynamique repose sur les colonnes modifiées.

  • Les politiques d’accès aux données sont ajoutées, supprimées ou modifiées sur les entrées de la table dynamique.

  • Les tables dynamiques incrémentielles clonées peuvent avoir besoin d’être réinitialisées lors de leur première actualisation après leur création.

  • Les tables dynamiques répliquées avec actualisation incrémentielle se réinitialisent après le basculement avant de pouvoir reprendre l’actualisation incrémentielle.

Pour des informations générales sur l’initialisation, voir Compréhension de l’initialisation des tables dynamiques.