Surveiller les tables dynamiques¶
Le sujet décrit les façons dont vous pouvez voir et comprendre les tables dynamiques dans vos pipelines :
Section |
Description |
---|---|
Liste des tables dynamiques ou vue des informations sur des colonnes spécifiques |
Établir la liste des tables dynamiques d’un schéma et voir les informations les concernant. |
Voir le graphique des tables connectées à vos tables dynamiques |
Consulter le graphique des tables connectées à vos tables dynamiques. |
Contrôle de vos tables dynamiques à l’aide des fonctions de table de SQL |
Contrôler vos tables dynamiques à l’aide des fonctions de table de SQL. |
Surveillez le statut de actualisation de vos tables dynamiques |
Voir le statut d’actualisation de vos tables dynamiques. |
Liste des tables dynamiques ou vue des informations sur des colonnes spécifiques¶
Pour dresser la liste des tables dynamiques d’un schéma et afficher des informations sur ces tables dynamiques, vous pouvez utiliser les commandes SQL ou Snowsight, à condition d’utiliser un rôle disposant du privilège MONITOR sur les tables dynamiques.
Pour plus d’informations, voir Privilèges permettant d’afficher les métadonnées d’une table dynamique.
Pour dresser la liste des tables dynamiques de la base de données actuelle (ou du compte, si aucune base de données n’est actuellement utilisée), utilisez la commande SHOW DYNAMIC TABLES.
Par exemple, pour répertorier les tables dynamiques dont les noms commencent par product_
dans la base de données mydb
et le schéma myschema
, exécutez l’instruction SQL suivante :
SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
+-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_on | name | database_name | schema_name | cluster_by | rows | bytes | owner | target_lag | refresh_mode | refresh_mode_reason | warehouse | comment | text | automatic_clustering | scheduling_state | last_suspended_on | is_clone | is_replica | is_iceberg | data_timestamp | owner_role_type |
|-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|2025-01-01 16:32:28 +0000 | product_dt | my_db | my_schema | | 2 | 2048 | ORGADMIN | DOWNSTREAM | INCREMENTAL | null | mywh | | create or replace dynamic table | OFF | ACTIVE | null | false | false | false |2025-01-01 16:32:28 +0000 | ROLE |
| product dt ... | | |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Pour obtenir des informations sur les colonnes d’une table dynamique, utilisez la commande DESCRIBE DYNAMIC TABLE.
Par exemple, pour établir la liste des colonnes de my_dynamic_table
, exécutez l’instruction SQL suivante :
DESC DYNAMIC TABLE my_dynamic_table;
+-------------------+--------------------------------------------------------------------------------------------------------------------------+
| name | type | kind | null? | default | primary key | unique key | check | expression | comment | policy name | privacy domain |
|-------------------+------------------------------------------------------------------------------------------------------------------------|
| AMOUNT | NUMBER(38,0) | COLUMN | Y | null | N | N | null | null | null | null | null | | |
+-------------------+------------------------------------------------------------------------------------------------------------------------+
Les tableaux dynamiques sont également inclus dans les résultats de la Vue TABLES.
Pour établir la liste des tables dynamiques d’un schéma et voir les informations relatives à une table dynamique spécifique, procédez comme suit :
Connectez-vous à Snowsight.
Sélectionnez Data » Databases.
Sélectionnez une base de données et un schéma.
Sélectionnez l’onglet Dynamic Tables ou développez Dynamic Tables dans l’explorateur d’objets de la base de données.
Pour voir des informations sur une table dynamique spécifique, sélectionnez la table dynamique dans la liste des tables dynamiques de l’onglet Dynamic Tables ou dans l’explorateur d’objets de la base de données.
Les onglets de cette page fournissent les informations suivantes sur la table dynamique sélectionnée :
Table Details : affiche des informations de base sur la table dynamique, notamment :
L’état de la planification de votre table dynamique.
Le dernier statut de actualisation de votre table dynamique. En cas d’échec de l’actualisation, vous pouvez obtenir plus d’informations sur l’erreur en survolant le statut.
La latence actuelle et la latence cible de votre table dynamique.
Si des actualisations incrémentielles ou des actualisations complètes sont utilisées pour mettre à jour la table.
La définition de la table dynamique.
Les balises de la table dynamique.
Les privilèges accordés pour travailler avec la table dynamique.
Columns : informations sur les colonnes de la table dynamique.
Data Preview : un aperçu de 100 lignes maximum des données de la table dynamique.
Graph : affiche le graphe orienté acyclique (DAG) qui comprend cette table dynamique.
Refresh History : affiche l’historique des actualisations et les métriques de décalage.
Voir le graphique des tables connectées à vos tables dynamiques¶
La vue des dépendances est particulièrement utile pour dépanner les chaînes de tables dynamiques. Dans Snowsight, vous pouvez visualiser de quelles tables dynamiques dépend une table dynamique donnée à l’aide du graphique de lignage. Par exemple, vous pouvez identifier les éléments suivants :
Dépendances en amont d’où une table dynamique tire ses données.
Dépendances en aval susceptibles d’être affectées par les modifications apportées à une table dynamique.

Les dépendances peuvent avoir un impact sur les performances du actualisation. Par exemple, supposons que la table en amont de votre table dynamique soit chargée d’un grand nombre de données juste avant son actualisation planifiée. Votre table dynamique attendra qu’il ait terminé l’actualisation, ce qui lui fera manquer sa latence cible. Dans le graphique de lignage, vous verrez que la table d’entrée est marquée comme étant « en exécution », ce qui indique le retard.
Pour voir le graphique d’une table dynamique particulière, procédez comme suit :
Connectez-vous à Snowsight.
Dans le menu de navigation, accédez à Monitoring » Dynamic Tables.
Sélectionnez votre table dynamique. La vue Graph est affichée par défaut. Le graphique s’affiche avec le nœud de la table dynamique sélectionnée. Le volet Details, à droite, affiche des informations sur les mesures de retard et la configuration.
Pour afficher les détails d’une table différente dans le graphique, sélectionnez cette table.
Pour mettre à jour le graphique, sélectionnez le bouton d’actualisation dans la barre située au-dessus du graphique.

Si une actualisation a échoué en raison d’un code d’erreur UPSTREAM_FAILED, vous pouvez utiliser le graphique pour visualiser la table en amont qui a provoqué l’erreur.

Pour consulter tous les détails d’une table dans le graphique, voir Liste des tables dynamiques ou vue des informations sur des colonnes spécifiques.
Contrôle de vos tables dynamiques à l’aide des fonctions de table de SQL¶
Utilisez les fonctions de table INFORMATION_SCHEMA suivantes pour contrôler vos tables dynamiques :
DYNAMIC_TABLES : renvoie des métadonnées sur vos tables dynamiques, notamment les métadonnées de retard agrégées et le statut des actualisations les plus récents, dans un délai de sept jours à compter de l’heure actuelle.
DYNAMIC_TABLE_REFRESH_HISTORY : renvoie des informations sur chaque actualisation terminée et en cours de vos tables dynamiques, y compris le statut et le déclencheur de l’actualisation, ainsi que la latence cible.
Vue DYNAMIC_TABLE_REFRESH_HISTORY : cette vue Account Usage affiche également des informations relatives à l’historique d’actualisation des tables dynamiques. Elle est utile pour résoudre les problèmes qui durent plus longtemps que la durée de conservation des données de la fonction de table DYNAMIC_TABLE_REFRESH_HISTORY (sept jours).
DYNAMIC_TABLE_GRAPH_HISTORY : renvoie des informations qui fournissent l’historique de chaque table dynamique, ses propriétés et ses dépendances par rapport à d’autres tables et tables dynamiques.
Vous pouvez utiliser cette fonction de table pour obtenir un aperçu de l’arborescence de dépendance des tables dynamiques à un moment donné.
La sortie reflète également les modifications apportées aux propriétés d’une table dynamique au fil du temps Chaque ligne représente une table dynamique et un ensemble spécifique de propriétés Si vous modifiez une propriété d’une table dynamique (par exemple, la latence cible), la fonction renvoie la propriété la plus récente.
Surveillez le statut de actualisation de vos tables dynamiques¶
Cette section explique comment voir le statut d’actualisation de toutes les tables dynamiques ou de certaines d’entre elles.
Pour une actualisation de la procédure de dépannage, voir Résolution des problèmes liés à l’absence, à la lenteur ou à l’échec de l’actualisation des tables dynamiques et Diagnostic des problèmes courants liés à l’actualisation des tables dynamiques.
Contrôler les actualisations de toutes vos tables dynamiques¶
Vous pouvez utiliser Snowsight ou la fonction de table DYNAMIC_TABLES pour voir le statut d’actualisation de toutes vos tables dynamiques.
Connectez-vous à Snowsight. Dans le menu de navigation, sélectionnez Monitoring » Dynamic Tables.
Cette page vous permet de voir l’état et le dernier statut d’actualisation de toutes vos tables dynamiques. Vous pouvez également filtrer par base de données ou par schéma pour restreindre les résultats.

DYNAMIC_TABLES fournit des informations sur toutes les tables dynamiques de votre compte.
L’exemple suivant permet de récupérer les informations relatives à l’état et à la latence cible de toutes les tables dynamiques du compte, ainsi que la base de données et le schéma qui leur sont associés.
SELECT
name,
database_name,
schema_name,
scheduling_state,
target_lag_type,
target_lag_sec,
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLES ()
)
ORDER BY
name;
+--------------------+------------------------------+--------------------------------------------------------------------------------------------------+-----------------+----------------+
| NAME | DATABASE_NAME | SCHEMA_NAME | SCHEDULING_STATE | TARGET_LAG_TYPE | TARGET_LAG_SEC |
|--------------------+------------------------------+--------------------------------------------------------------------------------------------------|-----------------+----------------+
| MY_DYNAMIC_TABLE_1 | MY_DB_1 | MY_SCHEMA_1 | { | | |
| | | | "reason_code": "UPSTREAM_SUSPENDED_DUE_TO_ERRORS", | | |
| | | | "reason_message": "The DT was suspended because an input DT had 5 consecutive refresh errors", | | |
| | | | "state": "SUSPENDED", | | |
| | | | "suspended_on": "2025-04-14 11:49:09.576 Z" | USER_DEFINED | 60 |
| | | | } | | |
| MY_DYNAMIC_TABLE_2 | MY_DB_2 | MY_SCHEMA_2 | null | | |
+--------------------+------------------------------+--------------------------------------------------------------------------------------------------+-----------------+----------------|
L’exemple suivant récupère l’état et les informations relatives à chaque état pour l’actualisation de toutes les tables dynamiques du compte.
-- latest_data_timestamp is the refresh timestamp associated with last successful refresh.
SELECT
name,
last_completed_refresh_state,
last_completed_refresh_state_code,
last_completed_refresh_state_message,
latest_data_timestamp,
time_within_target_lag_ratio,
maximum_lag_sec,
executing_refresh_query_id
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLES ()
)
ORDER BY
name;
-- Both dynamic tables in the example below have a target lag of one minute.
+--------------------+------------------------------+-----------------------------------+-----------------------------------------------+-----------------------+------------------------------+-----------------+----------------------------+
| NAME | LAST_COMPLETED_REFRESH_STATE | LAST_COMPLETED_REFRESH_STATE_CODE | LAST_COMPLETED_REFRESH_STATE_MESSAGE | LATEST_DATA_TIMESTAMP | TIME_WITHIN_TARGET_LAG_RATIO | MAXIMUM_LAG_SEC | EXECUTING_REFRESH_QUERY_ID |
|--------------------+------------------------------+-----------------------------------+-----------------------------------------------|-----------------------+------------------------------+-----------------+----------------------------+
| MY_DYNAMIC_TABLE_1 | UPSTREAM_FAILED | UPSTREAM_FAILURE | Skipped refreshing because an input DT failed | 2025-04-12 09:00:48 | null | null | null |
| MY_DYNAMIC_TABLE_2 | SUCCEEDED | SUCCESS | null | 2025-04-12 09:01:36 | 0.999 | 125 | null |
+--------------------+------------------------------+-----------------------------------+-----------------------------------------------+-----------------------+------------------------------+-----------------+----------------------------+
Surveillez tous les actualisations d’une table dynamique spécifique¶
Vous pouvez utiliser Snowsight ou la fonction de table DYNAMIC_TABLES_REFRESH_HISTORY pour voir l’historique d’actualisation d’une table dynamique donnée.
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Monitoring » Dynamic Tables.
Sélectionnez votre table dynamique, puis allez dans l’onglet Refresh History.
Cette page affiche l’historique de l’actualisation de votre table dynamique, qui comprend des informations sur le statut, la durée et la latence réelle de chaque actualisation, ainsi que le nombre de lignes modifiées à chaque actualisation.
Elle affiche également les mesures de décalage de votre table dynamique, notamment le pourcentage de temps compris dans la latence cible et le temps de décalage réel le plus long pendant l’intervalle donné.

Pour voir l’historique d’actualisation d’une table dynamique spécifique, utilisez la fonction de table DYNAMIC_TABLE_REFRESH_HISTORY.
Par exemple, si vous voulez voir l’historique d’actualisation de toutes les tables dynamiques de la base de données my_db
et du schéma my_schema
, exécutez l’instruction suivante :
SELECT
name,
data_timestamp,
state,
state_code,
state_message
FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (NAME_PREFIX => 'MY_DB.MY_SCHEMA')) ORDER BY data_timestamp desc;
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
| NAME | DATA_TIMESTAMP | STATE | STATE_CODE | STATE_MESSAGE |
|--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------|
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:01:36 | SKIPPED | SKIP_DUE_TO_UPSTREAM_FAILURE | Skipped refreshing because an input DT failed. |
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:48 | SUCCEEDED | | |
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:00 | FAILED | 100038 | Numeric value 'Good' is not recognized. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:01:36 | SUCCEEDED | | |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:48 | FAILED | 091930 | SQL compilation error: Change tracking is not enabled or has |
| | | | | been missing for the time range requested on table 'MY_TABLE'. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:00 | CANCELLED | 002724 | Dynamic Table refresh job cancelled. |
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
Pour filtrer les actualisations qui ont généré des erreurs, transmettez l’argument ERROR_ONLY => TRUE
. Par exemple :
SELECT
name,
data_timestamp,
state,
state_code,
state_message
FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (NAME_PREFIX => 'MY_DB.MY_SCHEMA', ERROR_ONLY => TRUE));
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
| NAME | DATA_TIMESTAMP | STATE | STATE_CODE | STATE_MESSAGE |
|--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------|
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:00 | FAILED | 100038 | Numeric value 'Good' is not recognized. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:48 | FAILED | 091930 | SQL compilation error: Change tracking is not enabled or has |
| | | | | been missing for the time range requested on table 'MY_TABLE'. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:00 | CANCELLED | 002724 | Dynamic Table refresh job cancelled. |
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+