动态表故障排除¶
本主题介绍对未按预期运行的动态表进行故障排除的解决方案:
由于动态表的使用限制,或者如果您没有必要的权限,某些操作可能会受到限制。有关更多信息,请参阅 动态表的已知限制 和 动态表访问控制。
有关动态表成本的信息,请参阅 了解动态表的成本。
如果您遇到此处未列出的问题,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。
动态表刷新故障排除¶
问题 |
解决方案 |
---|---|
我的动态表使用的是完全刷新而不是增量刷新。 |
动态表的实际 刷新模式 在创建时确定,此后不可变。如果未显式指定,刷新模式默认为 如果您希望动态表仅以增量方式刷新,那么在创建动态表时应显式设置所需的刷新模式,请注意 使用增量刷新可能会有一些限制。 备注 启用 2024_04 行为变更捆绑包后,Snowflake 会根据您的查询定义选择可能表现最佳的刷新模式。 要确定适合您用例的最佳模式,请尝试不同的刷新模式和自动建议。要在不同的 Snowflake 版本中保持一致的行为,您应该在所有动态表上显式设置刷新模式。 有关更多信息,请参阅 设置所有生产动态表的刷新模式。 使用具有 必要权限 的角色,您可以使用以下方法之一验证刷新模式:
|
我的动态表的增量刷新很慢。 |
动态表的刷新性能依赖于对其处理的工作负载或数据的特定假设。 使用 Refresh History 查看方差或点异常值:
|
我的动态表正在运行空刷新,但我看到产生了成本。 |
当刷新与动态表引用的任何上游对象的更改相关联时,产生零净新行(即添加、更新或删除的行数为零)的刷新会消耗仓库资源。 例如,如果关联的虚拟仓库已暂停,且未识别出基础对象有任何更改,则不会恢复已暂停的虚拟仓库,也不会消耗任何 Credit。这称为 NO_DATA 刷新。相反,如果识别出更改,则会自动恢复虚拟仓库以处理更新,即使应用于动态表的净结果是零行,也将消耗仓库资源。 如果您看到产生成本,但您未对动态表进行任何更改,这可能是由于源表中的变更所致。您可以使用 Snowsight 中的 Refresh History 选项卡,检查是否已使用虚拟仓库 Credit:
有关更多信息,请参阅 了解动态表的成本。 |
我的动态表跳过了刷新。 |
动态表按时间表刷新。计划刷新开始时,以下情况可能会导致跳过刷新:
手动刷新永远不会跳过,但可能会导致跳过其他刷新,特别是在对动态表执行频繁的手动刷新时。这样做会阻止下游动态表刷新。因此,如果某动态表具有根据目标延迟进行刷新的下游动态表,Snowflake 不建议您经常对该动态表执行手动刷新。 |
我的动态表刷新失败。 |
与常规 Snowflake 查询一样,动态表刷新可能会由于动态表的查询定义、输入数据(例如解析错误)或内部系统问题而失败。 要确定刷新失败的原因,请执行以下操作:
如果由于
|
我的动态表正在重新初始化。 |
由于以下原因之一,您的动态表可能正在重新初始化:
有关初始化的一般信息,请参阅 了解动态表初始化。 |
动态表创建故障排除¶
问题 |
解决方案 |
---|---|
创建我的动态表需要很长时间。 |
使用 CREATE DYNAMIC TABLE 语句创建动态表时,其初始刷新将在预定时间 ( 初始化可能需要一些时间,具体取决于扫描的数据量。要查看进度,请执行以下操作:
有关初始化的一般信息,请参阅 了解动态表初始化。 |
调试动态表¶
问题 |
解决方案 |
---|---|
我看不到我的动态表的元数据。 |
要查看动态表的元数据和 Information Schema,必须使用具有该动态表 MONITOR 权限的角色。有关更多信息,请参阅 查看动态表元数据的权限。 |
我的动态表已暂停。 |
动态表可能因如下原因而暂停:
要查看您的动态表暂停的原因,请执行以下操作:
|