Troubleshooting skipped, slow, or failed dynamic table refreshes

This topic helps you troubleshoot skipped, slow, or failed refreshes.

When monitoring your dynamic table refreshes, note the following:

Skipped refreshes

Dynamic tables refresh on a schedule. When a scheduled refresh starts, the following situations might cause the refresh to skip:

  • If the dynamic table being refreshed has another dynamic table upstream, and the refresh for the upstream failed or was skipped.

  • If a previous refresh for the dynamic table is still running.

  • If the dynamic table’s refresh often takes longer than the target lag or there’s a significant difference between the target and actual lag, Snowflake might skip a refresh to reduce the rate of future skips.

    For instance, if a dynamic table has a 1-minute target lag but typically takes one hour to refresh, the system adjusts the “actual lag” accordingly.

Manual refreshes are never skipped but they can cause other scheduled refreshes to skip, especially if you perform frequent manual refreshes on a dynamic table. Doing so can prevent downstream dynamic tables from refreshing. For this reason, Snowflake recommends that you avoid frequently performing manual refreshes on a dynamic table with downstream dynamic tables that are expected to refresh according to target lag.

Slow or failed refreshes

Dynamic table refresh performance relies on specific assumptions about the workload or data it’s handling. Refresh failures are typically due to issues with the dynamic table’s query definition, input data (for example, parsing errors), or internal system issues.

For slow refreshes, use the Refresh History page in Snowsight to visualize changes and spot outliers in your dynamic tables’ refresh duration:

An example of refresh history in Snowsight.

For failed refreshes, use the Refresh History page to determine whether the refresh failure is from delayed updates or data inconsistency. The Source Data Timestamp column displays the time that was updated by the last successful refresh. A failed refresh doesn’t advance this value. If this value is far behind relative to the target lag specified, it indicates that your dynamic table is lagging behind.

Additionally, you can use the Query Profile for advanced troubleshooting by clicking on Show query profile next to each refresh. This shows the graph of the query.

Highlighting show query profile option in Snowsight.

You can also use the Graph view in Snowsight to troubleshoot by visualizing the dependencies of your dynamic tables. A failed or suspended upstream dynamic table would automatically cause its downstream dynamic tables’ refresh to fail. For more information, see View the graph of tables connected to your dynamic tables.