更新物化视图。
背景信息
更新物化视图的命令包括:
更新物化视图
当物化视图的数据对应的表或分区产生插入、覆写、更新、删除等操作时,物化视图会自动失效,无法用于查询改写。您可以先查看物化视图状态,当物化视图失效时,执行更新操作。查看物化视图状态操作,请参见查询物化视图状态。
注意事项
物化视图的更新操作只支持全量更新,不支持增量更新。
您可以借助于DataWorks调度能力实现定时更新。DataWorks的调度操作信息,请参见调度配置。
命令格式
ALTER MATERIALIZED VIEW [<project_name>.]<mv_name> REBUILD [PARTITION (<ds>=max_pt(<table_name>),<expression1>...)];
参数说明
参数
是否必填
参数说明
project_name
否
物化视图所属目标MaxCompute项目名称。不填写时表示当前所在MaxCompute项目。您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
mv_name
是
待更新物化视图的名称。
ds
否
物化视图分区字段名称。
max_pt
否
取指定表或者物化视图(table_name)的最大分区值。
expression
否
当更新分区物化视图时,需要指定待更新分区信息,支持表达式。
使用示例
示例一:更新非分区物化视图。命令示例如下。
-- 创建非分区表 CREATE TABLE count_test(a BIGINT, b BIGINT); --创建非分区物化视图 CREATE MATERIALIZED VIEW count_mv LIFECYCLE 7 AS SELECT COUNT(*) FROM count_test; --更新非分区物化视图 ALTER MATERIALIZED VIEW count_mv rebuild;
示例二:更新分区物化视图的某个分区。命令示例如下。
ALTER MATERIALIZED VIEW mv REBUILD PARTITION (ds='20210101');
示例三:更新分区物化视图的满足指定条件的分区。命令示例如下。
ALTER MATERIALIZED VIEW mv REBUILD PARTITION(ds>='20210101', ds<='20210105');
修改物化视图的生命周期
修改已创建的物化视图的生命周期。
命令格式
ALTER MATERIALIZED VIEW [<project_name>.]<mv_name> SET LIFECYCLE <days>;
参数说明
参数
是否必填
参数说明
project_name
否
物化视图所属目标MaxCompute项目名称。不填写时表示当前所在MaxCompute项目。您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
mv_name
是
待更新物化视图的名称。
days
是
设置物化视图的新生命周期。单位为天。
使用示例
--修改物化视图的生命周期为10天。 ALTER MATERIALIZED VIEW mv SET LIFECYCLE 10;
开启或禁用物化视图的生命周期
开启或禁用已创建的物化视图的生命周期。
命令格式
ALTER MATERIALIZED VIEW [<project_name>.]<mv_name> [<pt_spec>] enable|disable LIFECYCLE;
参数说明
参数
是否必填
参数说明
project_name
否
物化视图所属目标MaxCompute项目名称。不填写时表示当前所在MaxCompute项目。您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
mv_name
是
待开启或禁用生命周期的物化视图的名称。
pt_spec
否
待开启或禁用生命周期的物化视图的分区。格式为
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
。partition_col是分区字段,partition_col_value是分区值。enable|disable
是
enable
代表开启,disable
代表禁用,禁用后该分区或表就不涉及生命周期管理。使用示例
示例一:开启物化视图的生命周期管理。命令示例如下。
ALTER MATERIALIZED VIEW mv PARTITION (ds='20210101') enable LIFECYCLE;
示例二:禁用物化视图的生命周期管理。命令示例如下。
ALTER MATERIALIZED VIEW mv PARTITION (ds='20210101') disable LIFECYCLE;
删除物化视图分区
删除已创建的物化视图的单个或多个分区。
命令格式
ALTER MATERIALIZED VIEW [<project_name>.]<mv_name> DROP [IF EXIXTS] PARTITION <pt_spec> [PARTITION <pt_spec>, PARTITION <pt_spec>....];
参数说明
参数
是否必填
参数说明
project_name
否
物化视图所属目标MaxCompute项目名称。不填写时表示当前所在MaxCompute项目。您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签查看到具体的MaxCompute项目名称。
mv_name
是
待删除分区的分区物化视图的名称。
IF EXISTS
否
如果没有指定IF EXISTS且物化视图不存在会返回报错。
pt_spec
是
至少要指定一个分区。待删除的分区。格式为
(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...)
。partition_col是分区字段,partition_col_value是分区值。使用示例
示例一:删除分区物化视图的某个分区。命令示例如下。
ALTER MATERIALIZED VIEW mv DROP PARTITION (ds='20210101');
示例二:删除分区物化视图的满足指定条件的分区。命令示例如下。
ALTER MATERIALIZED VIEW mv DROP PARTITION (ds>='20210101' AND ds<='20210105');
相关命令
CREATE MATERIALIZED VIEW:基于满足物化视图场景的数据创建物化视图,支持分区和聚簇场景。
DESC TABLE/VIEW:查看MaxCompute物化视图的信息。
SELECT MATERIALIZED VIEW:查询物化视图状态。
DROP MATERIALIZED VIEW:删除已创建的物化视图。