Actualiser manuellement les tables dynamiques

Vous pouvez actualiser manuellement une table dynamique pour y inclure les données les plus récentes sans attendre la prochaine actualisation planifiée. Cela est utile pour les mises à jour uniques, ou lorsqu’une table a une latence cible importante et que la prochaine actualisation a lieu beaucoup plus tard.

Astuce

Évitez les actualisations manuelles fréquentes sur les tables dynamiques avec des tables dynamiques en aval qui sont censées s’actualiser en fonction d’une latence cible. Ces types d’actualisations manuelles peuvent entraîner l’omission des actualisations planifiées et empêcher la mise à jour des tables en aval.

Pour effectuer une actualisation manuelle, utilisez la commande ALTER DYNAMIC TABLE … REFRESH ou l’Snowsight, comme montré dans les étapes suivantes :

ALTER DYNAMIC TABLE my_dynamic_table REFRESH
Copy

Pour les situations qui nécessitent un calendrier d’actualisation précis, telles que l’alignement des actualisations avec des planifications système externes ou des fenêtres de traitement par lots, vous pouvez utiliser une tâche avec une expression CRON pour déclencher l’actualisation.

Par exemple :

-- Create the task
CREATE TASK my_dt_refresh_task
  WAREHOUSE = my_wh
  SCHEDULE = 'USING CRON 0 0 * * * America/Los_Angeles' -- Example: daily at midnight PST
  COMMENT = 'Daily 5pm PT manual refresh of my_dynamic_table'
  AS
    ALTER DYNAMIC TABLE my_dynamic_table REFRESH;

-- Enable the task
ALTER TASK my_dt_refresh_task RESUME;

-- Show the task
SHOW TASKS LIKE 'my_dt_refresh_task';
Copy
+------------+-----------------+-------------------------------------+---------------+-------------+--------------+-------------------------------------------------+-----------|-------------------------------------------+------------------+---------+----------------------------------------------+-----------+-----------------------------+-------------------+-------------------------------|-------------------+-----------------+--------+---------------------+-----------------------+---------------------+-----------------+----------------------------+-----------------+
| CREATED_ON | NAME            | ID                                  | DATABASE_NAME | SCHEMA_NAME | OWNER        | COMMENT                                         | WAREHOUSE | SCHEDULE                                  | [ ] PREDECESSORS | STATE   | DEFINITION                                   | CONDITION | ALLOW_OVERLAPPING_EXECUTION | ERROR_INTEGRATION | LAST_COMMITTED_ON             | LAST_SUSPENDED_ON | OWNER_ROLE_TYPE | CONFIG | TASK_RELATIONS      | LAST_SUSPENDED_REASON | SUCCESS_INTEGRATION | SCHEDULING_MODE | TARGET_COMPLETION_INTERVAL | EXECUTE_AS_USER |
|------------+-----------------+-------------------------------------+---------------+-------------+--------------+-------------------------------------------------+-----------+-------------------------------------------+------------------+---------+----------------------------------------------+-----------+-----------------------------+-------------------+-------------------------------+-------------------+-----------------+--------+---------------------+-----------------------+---------------------+-----------------+----------------------------+-----------------|
| 2025-10-02 | DT_REFRESH_TASK | 01bf6f0d-690f-f373-0000-000000025e3d| mydb          | my_schema   | ACCOUNTADMIN | Daily 5pm PT manual refresh of my_dynamic_table | mywh      | USING CRON 0 17 * * * America/Los_Angeles | []               | Started | ALTER DYNAMIC TABLE my_dynamic_table REFRESH | null      | false                       | null              | 2025-10-02 05:08:52.897 +0000 | null              | ROLE            | null   | {"Predecessors":[]} | null                  | null                | null            | null                       | null            |
+------------+-----------------+-------------------------------------+---------------+-------------+--------------+-------------------------------------------------+-----------|-------------------------------------------+------------------+---------+----------------------------------------------+-----------+-----------------------------+-------------------+-------------------------------|-------------------+-----------------+--------+---------------------+-----------------------+---------------------+-----------------+----------------------------+-----------------+

Dans la plupart des cas, Snowflake recommande d’utiliser la latence cible, qui optimise la fréquence d’actualisation et peut réduire les coûts par rapport aux planifications CRON fixes qui peuvent s’exécuter inutilement.