ALTER DYNAMIC TABLE
功能概述
对已存在的动态表执行运维管理操作:修改刷新间隔、切换计算集群、暂停/恢复调度、修改注释、重命名列。
这些操作均通过
ALTER DYNAMIC TABLE
ALTER DYNAMIC TABLE
语法完成,
不会重置刷新基准,不会触发全量刷新。如果需要修改 SQL 定义(WHERE 条件、JOIN 关系、计算表达式)或增减列,必须使用
CREATE OR REPLACE DYNAMIC TABLE
CREATE OR REPLACE DYNAMIC TABLE
,详见
注意事项。
语法
修改刷新间隔
ALTER DYNAMIC TABLE <dt_name> REFRESH INTERVAL <n> <time_unit>;
同时修改刷新间隔和计算集群
ALTER DYNAMIC TABLE <dt_name> REFRESH INTERVAL <n> <time_unit> VCLUSTER <vc_name>;
暂停调度
ALTER DYNAMIC TABLE <dt_name> SUSPEND;
恢复调度
ALTER DYNAMIC TABLE <dt_name> RESUME;
修改表注释
ALTER DYNAMIC TABLE <dt_name> SET COMMENT '<comment>';
重命名列
ALTER DYNAMIC TABLE <dt_name> RENAME COLUMN <old_col> TO <new_col>;
修改列注释
ALTER DYNAMIC TABLE <dt_name> CHANGE COLUMN <col_name> COMMENT '<comment>';
设置/删除表属性
-- 设置或修改属性
ALTER DYNAMIC TABLE <dt_name> SET PROPERTIES('<key>'='<value>');
-- 删除属性
ALTER DYNAMIC TABLE <dt_name> UNSET PROPERTIES('<key>');
参数说明
REFRESH INTERVAL <n> <time_unit>
REFRESH INTERVAL <n> <time_unit>
修改自动刷新的触发频率。
<time_unit>
<time_unit>
可以是
SECOND
SECOND
、
MINUTE
MINUTE
、
HOUR
HOUR
。直接修改,不需要重建动态表,已有数据和刷新基准保留。
VCLUSTER <vc_name>
VCLUSTER <vc_name>
修改执行刷新任务所使用的计算集群。可以单独与
REFRESH INTERVAL
REFRESH INTERVAL
一起指定,在同一条语句中同时修改间隔和集群。
SUSPEND
SUSPEND
暂停自动调度。暂停后,表中已有数据仍然可以正常查询,但系统不再自动触发刷新,手动执行
REFRESH DYNAMIC TABLE
REFRESH DYNAMIC TABLE
也无效。
RESUME
RESUME
恢复自动调度。恢复后,系统在下一个调度周期自动执行刷新,追赶暂停期间积累的上游变更。
SET COMMENT '<comment>'
SET COMMENT '<comment>'
更新动态表的描述信息。传入空字符串可清除注释。
RENAME COLUMN <old_col> TO <new_col>
RENAME COLUMN <old_col> TO <new_col>
重命名列。只修改列名,不影响 SQL 定义和数据内容。
CHANGE COLUMN <col_name> COMMENT '<comment>'
CHANGE COLUMN <col_name> COMMENT '<comment>'
修改指定列的注释说明。
SET PROPERTIES
SET PROPERTIES
/ UNSET PROPERTIES
UNSET PROPERTIES
设置或删除表级属性键值对。目前为保留参数,供扩展使用。
使用示例
修改刷新间隔
将动态表
sales_dt
sales_dt
的刷新间隔从 10 分钟改为 30 分钟:
ALTER DYNAMIC TABLE sales_dt REFRESH INTERVAL 30 MINUTE;
同时修改刷新间隔和计算集群
将刷新间隔改为 1 小时,并切换到
vc_heavy
vc_heavy
集群执行刷新:
ALTER DYNAMIC TABLE sales_dt REFRESH INTERVAL 1 HOUR VCLUSTER vc_heavy;
暂停和恢复调度
暂停调度(常用于上游数据维护窗口、暂时停止消耗计算资源):
ALTER DYNAMIC TABLE sales_dt SUSPEND;
维护完成后恢复,系统在下一个调度周期自动追赶变更:
ALTER DYNAMIC TABLE sales_dt RESUME;
修改表注释
ALTER DYNAMIC TABLE sales_dt SET COMMENT '订单销售汇总,每30分钟刷新';
重命名列
ALTER DYNAMIC TABLE sales_dt RENAME COLUMN order_amt TO order_amount;
修改列注释
ALTER DYNAMIC TABLE sales_dt CHANGE COLUMN order_amount COMMENT '订单金额(元)';
注意事项
哪些操作用 ALTER DYNAMIC TABLE
ALTER DYNAMIC TABLE
- 修改刷新间隔
- 切换计算集群
- 暂停/恢复调度
- 修改表注释或列注释
- 重命名列
以上操作均保留现有数据和增量刷新基准,不会触发全量刷新。
哪些操作必须用 CREATE OR REPLACE DYNAMIC TABLE
CREATE OR REPLACE DYNAMIC TABLE
以下操作涉及 SQL 定义变化,必须用
CREATE OR REPLACE
CREATE OR REPLACE
:
- 修改 SQL 逻辑(WHERE 条件、JOIN 关系、计算表达式、聚合方式)
- 增加列(新列参与计算逻辑)
- 减少列
⚠️ 注意:
CREATE OR REPLACE
CREATE OR REPLACE
后下次
REFRESH
REFRESH
的刷新模式以
refresh_mode
refresh_mode
为准,不一定是全量——改
SELECT
SELECT
逻辑会重算受影响的结果(通常标记为
INCREMENTAL
INCREMENTAL
);而
仅增加列不会回填历史行:已有行的新列保持
NULL
NULL
,只有之后发生变更(
INSERT
INSERT
/
UPDATE
UPDATE
)的行才会算出新列值。若要让新列在所有历史行上都有值,需 full refresh/backfill一遍。刷新模式怎么看,见
动态表为什么走全量、怎么保住增量。
SUSPEND 期间的行为
- 表中已有数据可以正常查询
- 自动调度停止,不再消耗计算资源
- 手动执行
REFRESH DYNAMIC TABLE
REFRESH DYNAMIC TABLE
无效,命令会被忽略
- 上游数据的变更在 SUSPEND 期间积累,RESUME 后由下一次调度统一处理
相关文档