ALTER MATERIALIZED VIEW

更新物化视图。

背景信息

更新物化视图

当物化视图的数据对应的表或分区产生插入、覆写、更新、删除等操作时,物化视图会自动失效,无法用于查询改写。您可以先查看物化视图状态,当物化视图失效时,执行更新操作。查看物化视图状态操作,请参见查询物化视图状态

  • 注意事项

    • 物化视图的更新操作只支持全量更新,不支持增量更新。

    • 您可以借助于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');

相关命令