关于管理动态表¶
管理动态表通常涉及以下任务:
任务 |
描述 |
---|---|
列出和查看动态表。 |
|
删除动态表。 |
|
更改动态表。 |
列出动态表并查看有关动态表的信息¶
要列出数据库中的动态表并查看有关这些动态表的信息,可以使用 Snowsight 或 SQL 命令:
使用 Snowsight 列出动态表并查看详细信息¶
要列出架构中的动态表并查看有关动态表的信息,请执行以下操作:
登录 Snowsight。
选择 Data » Databases。
选择数据库和架构。
在 Schema Details 中,选择 Dynamic Tables 选项卡。
请注意,您还可以通过展开 Dynamic Tables,在数据库对象资源管理器中查看动态表列表。
要查看有关特定动态表的信息,请在数据库对象资源管理器或 Dynamic Tables 选项卡的动态表列表中选择该动态表。
此页面上的选项卡提供一些与 表详细信息页面 相同的信息,包括:
动态表的定义以及为使用动态表而授予的权限
有关动态表中列的信息
动态表中最多 100 行数据的预览
此外,动态表详细信息页面还包括可用于查看有关动态表信息的选项卡:
Graph 选项卡显示包含此动态表的 有向无环图 (DAG)。请参阅 使用 Snowsight 检查动态表的图。
Refresh History 选项卡显示刷新历史记录。请参阅 使用 Snowsight 监控刷新。
使用 SQL 命令列出动态表并查看详细信息¶
使用 SHOW DYNAMIC TABLES 命令可列出当前数据库中的动态表(如果当前未使用数据库,则列出账户中的动态表)。
例如,要列出数据库
mydb
和架构myschema
中名称以product_
开头的动态表,请执行以下 SQL 语句:SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
有关该命令的完整语法,请参阅 SHOW DYNAMIC TABLES。
要输出有关动态表中列的信息,请使用以下 DESCRIBE DYNAMIC TABLE 命令。
例如,要列出名为
product
的动态表中的列:DESC DYNAMIC TABLE product;
动态表也包含在 TABLES 视图 的结果中。
删除动态表¶
要删除动态表,您可以使用 Snowsight 或 SQL 命令。
- Snowsight:
在 Snowsight 中,打开动态表详细信息页面(说明)。
在页面右上角的 More 菜单中,选择 Drop。
- SQL:
使用 DROP DYNAMIC TABLE 命令。
例如,要删除名称为
product
的动态表,请使用:
DROP DYNAMIC TABLE product;
使用动态表共享数据¶
动态表是可共享的对象。要共享动态表,数据共享提供商要将动态表上的权限授予共享,从而供数据共享使用者使用。
更改动态表的仓库或目标滞后¶
要更改动态表的仓库或目标滞后,请使用以下 ALTER DYNAMIC TABLE 命令。
例如,要将动态表 product
的仓库更改为 my_other_wh
,请运行以下命令:
ALTER DYNAMIC TABLE product SET WAREHOUSE = my_other_wh;
下图说明了在与其他动态表的上游和下游关系的上下文中执行的暂停、恢复和手动刷新操作。
该图描述了使用动态表构建的简单声明性数据管道。与小河中的水流类似,动态表管道中的数据从根向下游流向叶动态表:
DT2 被描述为 DT1 的 下游,因为它依赖于该动态表,并被描述为依赖于它的 DT3 的 上游。
DT3 是 DT2 和 DT1 的下游,因为它直接依赖于 DT1、间接依赖于 DT2。
DT1 直接或间接位于其他动态表的上游。
有关使用下游目标滞后的更多详细信息和示例,请参阅 了解目标滞后。
确定动态表的最佳目标滞后¶
要确定动态表的最佳目标滞后时间,可以使用 Snowsight 或 SQL 命令。
- Snowsight:
在 动态表详细信息页面 上,选择 Refresh History 选项卡。
检查最长实际滞后时间,该时间显示在选项卡顶部。此指标基于每次刷新的实际滞后时间。
- SQL:
使用 INFORMATION_SCHEMA 中的 DYNAMIC_TABLE_REFRESH_HISTORY 表函数。此函数返回有关动态表每次刷新的信息,包括刷新所花费的时间以及哪些刷新被跳过。
您选择的滞后时间可能会影响由自动刷新过程确定的刷新计划。自动刷新过程会选择一个最符合动态表滞后时间的计划。
确定使用增量刷新还是完全刷新¶
要确定是使用增量刷新还是完全刷新来更新动态表,可以使用 Snowsight 或 SQL 命令。
- Snowsight:
转到 动态表详细信息页面。
页面顶部的基本详细信息会显示该表是使用增量刷新还是完全刷新。
- SQL:
使用 SHOW DYNAMIC TABLES 命令,并检查输出中
REFRESH_MODE
列的值。REFRESH_MODE_REASON 包含有关 REFRESH_MODE 选择的更多详细信息。
了解对基表中的列所做的变更造成的影响¶
基表、视图和基础动态表中的列可能会随时间而变化。某些变更可能会影响动态表本身;其他变更可能影响有限或没有影响。
当与动态表关联的基础对象发生变更时,将适用以下行为:
变更 |
影响 |
---|---|
|
无。如果将新列添加到基表中或删除了未使用的列,则不会发生任何操作,并且刷新会像之前一样继续进行。 |
|
完全刷新/重新初始化:在下一个刷新周期中,将进行完全刷新,以确保动态表中没有不正确或过时的数据。 |
|
动态表的状态将变更为 FAILING。 必须重新创建动态表才能响应变更。有关动态表状态的更多信息,请参阅 动态表状态。 |
了解自动暂停行为¶
备注
如果系统观察到五个连续刷新错误,则动态表将暂停。由于刷新错误而暂停的动态表通常称为 自动暂停,因为它们是由系统暂停的,而不是通过用户操作暂停的。
任何依赖于暂停的动态表的动态表也会暂停。SCHEDULING_STATE 描述动态表的当前状态。
若要查看动态表的计划状态,请调用 DYNAMIC_TABLE_GRAPH_HISTORY 表函数,并检查 SCHEDULING_STATE 列。