REFRESH DYNAMIC TABLE

更新時間:
Copy as MD

HologresV3.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重新整理資源。概要如下:

  • Serverless:預設值。

  • local:可選值,使用本執行個體資源。

  • warehouse_name:如果是計算群組執行個體,支援指定warehouse執行重新整理。從V4.0.7版本開始支援該參數。如果沒指定,手動執行refresh時預設使用當前串連的warehouse資源;自動重新整理時使用建表時串連的warehouse。

  • 如果是分區表,必須帶上分區欄位,且只能對單分區進行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後,會清空分區狀態,並重新重新整理指定的分區資料。