克隆动态表¶
克隆操作会创建具有相同的列定义的新动态表,并包含源动态表中的全部现有数据,而不会实际复制数据。
您可以将动态表克隆到新的动态表或常规表。
将动态表克隆到新的动态表¶
克隆的动态表(无论是直接克隆,还是作为克隆数据库或架构的一部分)在默认情况下均处于暂停状态。
In DYNAMIC_TABLE_GRAPH_HISTORY, this appears as CLONED_AUTO_SUSPENDED in the SCHEDULING_STATE column. Any downstream dynamic tables are also suspended, shown as UPSTREAM_CLONED_AUTO_SUSPENDED. For more information, see 自动动态表暂停.
-- Clone a dynamic table to a new dynamic table
CREATE [ OR REPLACE ] [ TRANSIENT ] DYNAMIC TABLE <name>
CLONE <source_dynamic_table>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
[
COPY GRANTS
TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
WAREHOUSE = <warehouse_name>
]
您还可以克隆过去特定时刻存在的动态表:
CREATE DYNAMIC TABLE my_cloned_dynamic_table CLONE my_dynamic_table AT (TIMESTAMP => TO_TIMESTAMP_TZ('04/05/2013 01:02:03', 'mm/dd/yyyy hh24:mi:ss'));
有关更多信息,请参阅 使用 Time Travel 进行克隆(仅限数据库、架构、表、动态表、事件表和流)。
将动态表克隆到新表¶
克隆表继承源动态表的相同列定义和数据,但缺少动态表特定的属性。它们保留行访问和掩码策略、标签、群集密钥和注释。
-- Clone a dynamic table to a new table
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] <name>
CLONE <source_dynamic_table_name>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
将动态表克隆为常规表时,需要遵循与 克隆常规表 相同的注意事项,但有以下例外:
源动态表必须 已初始化,才能克隆为常规表。
无法克隆动态 Apache Iceberg™ 表。
克隆动态表管道的最佳实践¶
在同一克隆命令中克隆动态表管道的所有元素,以避免重新初始化管道。您可以通过在同一架构或数据库中整合管道的所有元素(例如基表、视图和动态表)来做到这一点。