动态表刷新跳过或失败故障排除

本主题可帮助您解决刷新跳过或失败的问题。有关刷新缓慢的诊断,请参阅 监控动态表性能

监控动态表刷新情况时,请注意以下几点:

  • 如果您看到很多 SKIPPED 条目,请参阅 跳过刷新

  • 如果您看到一致的 FAILED 条目,请参阅 刷新失败

  • 如果您看到 SCHEDULED 或 EXECUTING 条目卡顿很长时间,请参阅 监控动态表性能

跳过刷新

动态表按时间表刷新。计划刷新开始时,以下情况可能会导致跳过刷新:

  • 如果正在刷新的动态表上游有另一个动态表,而上游的刷新失败或被跳过。

  • 如果动态表的上一个刷新仍在运行。

  • 如果动态表的刷新时间通常比目标滞后时间长,或目标滞后和实际滞后之间存在显著差异,Snowflake 可能会跳过刷新以降低未来的跳过率。

    例如,如果动态表的目标滞后为 1 分钟,但通常需要一小时才能刷新,则系统会相应地调整“实际滞后”。

    要提高刷新性能,请参阅 优化动态表性能

手动刷新永远不会跳过,但可能会导致跳过其他计划的刷新,特别是在对动态表执行频繁的手动刷新时。这样做会阻止下游动态表刷新。因此,如果某动态表具有根据目标延迟进行刷新的下游动态表,Snowflake 建议您避免频繁地对该动态表执行手动刷新。

刷新失败

刷新失败通常是由于动态表的查询定义问题、输入数据(例如,解析错误)或上游失败问题造成的。

查找失败的刷新

要查找失败的刷新,请查询刷新历史记录:

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
));

您还可以使用 Snowsight 中的 Refresh History 页面查看失败的刷新。Source Data Timestamp 列显示上次成功刷新的时间。刷新失败不会提高此值。如果远远落后于目标滞后,则动态表存在滞后。

诊断刷新的失败

使用 Query Profile,通过选择每个刷新旁的 Show query profile 来进行故障排除。这会显示查询的执行图表。

在 Snowsight 中突出显示查询配置文件选项。

使用 Snowsight 中的 Graph 视图来可视化依赖关系。失败或暂停的上游动态表会导致其下游动态表失败。有关更多信息,请参阅 查看连接到动态表的表图形

查询事件表以查找故障

您可以查询事件表以查找动态表中的刷新失败:

SELECT
  timestamp,
  resource_attributes:"snow.executable.name"::VARCHAR AS dt_name,
  resource_attributes:"snow.query.id"::VARCHAR AS query_id,
  value:message::VARCHAR AS error
FROM my_event_table
WHERE
  resource_attributes:"snow.executable.type" = 'DYNAMIC_TABLE' AND
  resource_attributes:"snow.database.name" = 'MY_DB' AND
  value:state = 'FAILED'
ORDER BY timestamp DESC;

有关配置事件表和设置警报的更多信息,请参阅 动态表的事件表监控和警报