诊断常见的动态表刷新问题

本主题介绍对未按预期刷新的动态表进行故障排除的解决方案:

由于动态表的使用限制,或者如果您没有必要的权限,某些操作可能会受到限制。有关更多信息,请参阅 动态表限制动态表访问控制

如果您遇到此处未列出的问题,请联系 Snowflake 支持部门

问题

解决方案

我的动态表使用的是完全刷新而不是增量刷新。

动态表的实际 刷新模式 在创建时确定,此后不可变。如果未显式指定,刷新模式默认为 AUTO,它会根据查询复杂性、不支持的构造、运算符或函数等各种因素选择刷新模式。

要在不同的 Snowflake 版本中保持一致的行为,可在所有动态表上显式设置刷新模式。例如,如果您希望动态表仅以增量方式刷新,那么在创建动态表时应将刷新模式显式设置为 INCREMENTAL,并注意,使用增量刷新可能会有一些限制。有关更多信息,请参阅 选择动态表刷新模式的最佳实践

使用具有 必要权限 的角色,您可以使用以下方法之一验证刷新模式:

  • 使用 SQL:运行 SHOW DYNAMIC TABLES 语句。在输出中,text 列显示用户指定的刷新模式,refresh_mode 列显示实际刷新模式,refresh_mode_reason 显示选择实际刷新模式的原因。

  • 使用 Snowsight:在导航菜单中,选择 Monitoring » Dynamic Tables,然后选择您的动态表。您可以在 Table Details 选项卡中查看动态表的刷新模式。

我的动态表的增量刷新很慢。

动态表的刷新性能依赖于对其处理的工作负载或数据的特定假设。

使用 Refresh History 查看方差或点异常值:

  1. 登录 Snowsight

  2. 在导航中,转到 Monitoring » Dynamic Tables

  3. 选择您的动态表并转到 Refresh History 选项卡。

  4. 使用动态表在过去 24 小时内的刷新持续时间进行故障排除。

我的动态表正在运行空刷新,但我看到产生了成本。

当刷新与动态表引用的任何上游对象的更改相关联时,产生零净新行(即添加、更新或删除的行数为零)的刷新会消耗仓库资源。

例如,如果关联的虚拟仓库已暂停,且未识别出基础对象有任何更改,则不会恢复已暂停的虚拟仓库,也不会消耗任何 Credit。这称为 NO_DATA 刷新。相反,如果识别出更改,则会自动恢复虚拟仓库以处理更新,即使应用于动态表的净结果是零行,也将消耗仓库资源。

如果您看到产生成本,但您未对动态表进行任何更改,这可能是由于源表中的变更所致。您可以使用 Snowsight 中的 Refresh History 选项卡,检查是否已使用虚拟仓库 Credit:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Monitoring » Dynamic Tables

  3. 选择您的动态表并转到 Refresh History 选项卡。

  4. 选中 Warehouse used only 复选框,以查看使用仓库进行更新的刷新。

有关更多信息,请参阅 了解动态表的成本

我的动态表正在重新初始化。

由于以下原因之一,您的动态表可能正在重新初始化:

  • 动态表的一个或多个输入被替换。例如,如果在视图上定义了动态表,并且替换了视图,则动态表必须重新初始化。

  • 如果输入的架构变更,并且您的动态表依赖于变更的列。

  • 在动态表的输入上添加、删除或更改了 数据访问策略

  • 克隆的增量动态表 在创建后第一次刷新时可能需要重新初始化。

  • 具有增量刷新的 复制的动态表 在故障转移后重新初始化,然后才能恢复增量刷新。

有关初始化的一般信息,请参阅 了解动态表初始化

语言: 中文