REFRESH DYNAMIC TABLE
Hologres自V3.0版本起,支援通過REFRESH DYNAMIC TABLE命令對Dynamic Table的資料進行手動重新整理或自動重新整理。
文法介紹
單獨執行一次Refresh操作視為手動重新整理,若在執行CREATE DYNAMIC TABLE命令時配置了重新整理策略,則為自動重新整理。
--所有版本都支援的refresh文法
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>;
--V3.1版本開始,支援的refresh文法
REFRESH [OVERWRITE] DYNAMIC TABLE [<schema_name>.]<table_name>
[PARTITION (<partition_key> = '<partition_value>') ]
[WITH (
refresh_mode = '{full|incremental}'
)];參數說明如下。
參數 | 描述 |
schema_name | 表所在的Schema名稱。 |
table_name | 非分區表或分區子表的表名。 |
OVERWRITE | 支援對Dynamic Table使用overwrite的文法。 說明 僅Hologres V3.1及以上版本支援。 |
PARTITION (<partition_key> = '<partition_value>') | 目標表為分區表時的配置。 partition_key為分區鍵,partition_value為對應的分區值。 |
WITH ( refresh_mode = '{full|incremental}' ) | 支援在重新整理時指定重新整理模式。 說明 僅Hologres V3.1及以上版本支援。 |
computing_resource={'local' | 'serverless' | 'warehouse_name'} | 支援在重新整理時指定重新整理資源,資源的詳細使用見設定Dynamic Table重新整理資源。概要如下:
|
如果是分區表,必須帶上分區欄位,且只能對單分區進行Refresh。
當Dynamic Table處於不同的Refresh mode時,手動執行Refresh相關文法的效果如下:
命令
表為增量重新整理(incremental)時的行為
表為全量重新整理(full)時的行為
refresh
增量重新整理
全量重新整理
refresh overwrite
重新執行增量重新整理,不保留之前的狀態
全量重新整理
refresh with full
報錯
全量重新整理
refresh with incremental
增量重新整理
報錯
refresh overwrite with incremental
重新執行增量重新整理,不保留之前的狀態
報錯
refresh overwrite with full
執行一次全量重新整理,並且停止增量重新整理。
全量重新整理
使用限制
如果Dynamic Table是普通分區表,僅支援REFRESH DYNAMIC TABLE命令,不支援重新整理父表,但可以重新整理子表。
當Dynamic Table為邏輯分區表時:
如果手動重新整理時指定了
refresh_mode,則重新整理後,系統會將分區重新整理模式轉為指定模式,並且不會再對此分區執行自動重新整理。執行OVERWRITE後,會清空分區狀態,並重新重新整理指定的分區資料。