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及以上版本支持。 |
如果是分区表,必须带上分区字段,且只能对单分区进行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后,会清空分区状态,并重新刷新指定的分区数据。