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后,会清空分区状态,并重新刷新指定的分区数据。