修改物化视图
支持使用ALTER语句对MATERIALIZED VIEW进行运维管理,包括暂停和启动由Lakehouse系统刷新的调度任务。当创建MATERIALIZED VIEW时,使用refreshOption语法,可以通过以下语句来控制任务的执行状态。
有关更多详细信息,请参阅物化视图。
修改物化视图
Lakehouse 系统支持使用 ALTER
语句对物化视图进行运维管理:
- 暂停和启动调度任务:控制由 Lakehouse 系统自动刷新的调度任务。
- 表注释:更新物化视图的描述信息。
- 列名:修改现有列的名称。
对于涉及 SQL 查询逻辑变化 的修改(即物化视图定义中的 SELECT
加工过程),必须使用 CREATE OR REPLACE
语法。这是因为动态表与普通表不同,其定义包含了数据加工逻辑,而不仅仅是静态结构。以下需要使用CREATE OR REPALCE 语法修改
- 调度周期:调整调度任务的执行频率。
- 计算集群:指定用于处理物化视图的计算资源。
- 加列:物化视图增加列,涉及到SQL语法结构变化。
- 减列:物化视图增减列,涉及到SQL语法结构变化。
- 修改列类型:涉及到SQL语法结构变化。
- 修改物化视图中SQL语法定义:涉及到SQL语法结构变化。
语法
暂停Lakehouse系统刷新的调度任务
-- 暂停Lakehouse系统刷新的调度任务
ALTER MATERIALIZED VIEW dt_name SUSPEND;
启动Lakehouse系统刷新的调度任务
-- 启动Lakehouse系统刷新的调度任务
ALTER MATERIALIZED VIEW mv_name RESUME;
-- 修改表的comment
ALTER TABLE mv_name SET COMMENT 'comment';
修改物化视图中列的名字
ALTER TABLE mv_name RENAME COLUMN column_name TO new_column_name;
案例
ALTER TABLE change_table RENAME COLUMN i TO ii;
ALTER TABLE table_name CHANGE COLUMN column_name_identifier COMMENT 'comment'
案例
ALTER TABLE change_table CHANGE COLUMN ii COMMENT 'comment';
修改表的属性
功能:通过ALTER TABLE命令,您可以为外部表设置或修改属性。目前为保留参数
语法:
ALTER TABLE table_name SET PROPERTIES("key"="value");
修改调度周期
--原表
CREATE MATERIALIZED VIEW mv_table
REFRESH interval 10 minute vcluster default
AS select * from student02;
--修该后
CREATE OR REPLACE MATERIALIZED VIEW mv_table
BUILD DEFERRED
REFRESH
interval 20 minute vcluster default
DISABLE QUERY REWRITE
AS select * from student02;--修改计算集群
--原表
CREATE MATERIALIZED VIEW mv_table
REFRESH
interval 10 minute vcluster default
AS select * from student02;
--修该后
CREATE OR REPLACE MATERIALIZED VIEW mv_table
BUILD DEFERRED
REFRESH interval 10 minute vcluster alter_vc
DISABLE QUERY REWRITE
AS select * from student02;
增加列
--创建一个基表
DROP TABLE IF EXISTS mv_base_a;
CREATE TABLE mv_base_a (i int, j int);
INSERT INTO mv_base_a VALUES
(1,10),
(2,20),
(3,30),
(4,40);
--使用MATERIALIZED VIEW进行加工
DROP MATERIALIZED VIEW IF EXISTS mv_table;
CREATE MATERIALIZED VIEW mv_table
(i,j)
AS select * from mv_base_a;
--刷新MATERIALIZED VIEW
refresh MATERIALIZED VIEW mv_table;
--查询数据
select * from mv_table;
+---+----+
| i | j |
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
--添加一列col
CREATE OR REPLACE MATERIALIZED VIEW mv_table
(i,j,col)
BUILD DEFERRED DISABLE QUERY REWRITE
AS select i,j,j*1 from mv_base_a;
--下次刷新会进行全量刷新,因为新增了加工逻辑
refresh MATERIALIZED VIEW mv_table;
SELECT * FROM mv_table;
+---+----+-----+
| i | j | col |
+---+----+-----+
| 1 | 10 | 10 |
| 2 | 20 | 20 |
| 3 | 30 | 30 |
| 4 | 40 | 40 |
+---+----+-----+
减列
DROP TABLE IF EXISTS mv_base_a;
CREATE TABLE mv_base_a (i int, j int);
INSERT INTO mv_base_a VALUES
(1,10),
(2,20),
(3,30),
(4,40);
--使用MATERIALIZED VIEW进行加工
DROP MATERIALIZED VIEW IF EXISTS mv_table;
CREATE MATERIALIZED VIEW mv_table
(i,j)
AS select * from mv_base_a;
--刷新MATERIALIZED VIEW
refresh MATERIALIZED VIEW mv_table;
--查询数据
select * from mv_table;
+---+----+
| i | j |
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
--物化视图修改:减列
CREATE OR REPLACE MATERIALIZED VIEW mv_table
(i,j)
BUILD DEFERRED DISABLE QUERY REWRITE
AS select i,j from mv_base_a;
--此时表中查询会少一列,刷新为增量刷新。
select * from mv_table;
+---+----+
| i | j |
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
修改SQL语法定义
--创建一个基表
DROP TABLE IF EXISTS mv_base_a;
CREATE TABLE mv_base_a (i int, j int);
INSERT INTO mv_base_a VALUES
(1,10),
(2,20),
(3,30),
(4,40);
--使用MATERIALIZED VIEW进行加工
DROP MATERIALIZED VIEW IF EXISTS mv_table;
CREATE MATERIALIZED VIEW mv_table
(i,j)
AS select * from mv_base_a;
--刷新MATERIALIZED VIEW
refresh MATERIALIZED VIEW mv_table;
--查询数据
select * from mv_table;
+---+----+
| i | j |
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
--修改where过滤条件
CREATE OR REPLACE MATERIALIZED VIEW mv_table
(i,j)
BUILD DEFERRED DISABLE QUERY REWRITE
AS select * from mv_base_a where i>3;
--此时刷新会全量刷新一次
refresh MATERIALIZED VIEW mv_table;
select * from mv_table;
+---+----+
| i | j |
+---+----+
| 4 | 40 |
+---+----+