更改现有动态表¶
本节介绍如何使用 ALTER DYNAMIC TABLE 命令对现有动态表进行更改:
更改动态表的仓库或目标滞后
为动态表重命名、交换或添加群集密钥
更改动态表的仓库或目标滞后¶
Adjust your dynamic tables' warehouse for cost efficiency or performance boost. For more information, see Compute costs and 了解动态表的仓库使用情况.
在以下情况下,调整动态表的目标滞后以获得更新的数据:
您需要更新的数据:减少目标滞后以触发更频繁的刷新。
您想降低成本:不需要近实时新鲜度的数据可以使用更长的目标滞后。例如,对于每 20 分钟刷新一次、但只需保证与源表数据在一小时内同步的动态表,可以使用一小时的目标滞后来降低计算成本。
您的管道计划不一致:当动态表依赖于其他刷新间隔较长的表时,请将目标滞后与这些依赖项保持一致,以避免不必要的刷新。
您看到跳过的刷新:当刷新时间超过目标滞后时,Snowflake 会跳过一些刷新。请增加目标滞后以匹配实际的刷新持续时间。
有关更多信息,请参阅 了解动态表目标滞后。
要更改动态表的仓库或目标滞后,请使用 ALTER DYNAMIC TABLE 命令。例如:
-- Change the warehouse for my_dynamic_table to my_other_wh:
ALTER DYNAMIC TABLE my_dynamic_table SET
WAREHOUSE = my_other_wh;
-- Specify the downstream target lag for a dynamic table:
ALTER DYNAMIC TABLE my_dynamic_table SET
TARGET_LAG = DOWNSTREAM;
重命名动态表¶
如果您的脚本或应用程序依赖于特定表名称,并且您希望在不更改现有脚本的情况下更新动态表,则重命名动态表可能很有用。例如,如果您有一个引用特定动态表名的脚本,通过重命名表,您可以在不更改脚本的情况下更换基础表。这确保了连续性,并避免了跨脚本或进程更新多个引用的麻烦。
要重命名动态表,请使用 ALTER DYNAMIC TABLE ... RENAME TO 命令。例如:
ALTER DYNAMIC TABLE my_dynamic_table RENAME TO my_new_dynamic_table;
交换动态表¶
交换动态表可以实现数据集或表版本之间的无缝过渡,而不会干扰工作流程或修改依赖的脚本。例如,如果您正在开发表的新版本,但希望保持现有名称以供正在进行的流程使用,通过交换,您可以将旧表替换为新表。这种方法确保了连续性,同时使得在最小的停机时间或干扰下进行更新、测试或升级成为可能。
要交换动态表,请使用 ALTER DYNAMIC TABLE ... SWAP WITH 命令。请注意,您只能将动态表与另一个动态表交换。
例如:
-- Swap my_dynamic_table with the my_new_dynamic_table:
ALTER DYNAMIC TABLE my_dynamic_table SWAP WITH my_new_dynamic_table;
向动态表中添加群集密钥¶
向动态表中添加群集密钥可以通过提高查询效率和刷新操作来增强性能:
查询效率:与常规表一样,通过对常用联接键或筛选列进行聚类,群集密钥可以帮助加速查询。
刷新操作:如果群集密钥与频繁的更改模式保持一致,则群集密钥可以帮助加快刷新速度;例如,当有少数用户发生变更时,按用户 ID 进行聚类可能会非常有效。
群集密钥可以为动态表的增量刷新模式或完全刷新模式指定。 在完全刷新模式下,聚类操作会在刷新过程中执行,因此无需后台重聚类。
要对动态表进行聚类,请使用 ALTER DYNAMIC TABLE ...CLUSTER BY 命令:
ALTER DYNAMIC TABLE my_dynamic_table CLUSTER BY (date);