全部產品
Search
文件中心

MaxCompute:ALTER MATERIALIZED VIEW

更新時間:May 24, 2025

更新物化視圖。

命令概覽

更新物化視圖

當物化視圖的資料對應的表或分區產生插入、覆寫、更新、刪除等操作時,物化視圖會自動失效,無法用於查詢改寫。您可以先查看物化檢視狀態,當物化視圖失效時,執行更新操作。查看物化檢視狀態操作,請參見查詢物化檢視狀態

  • 注意事項

    • 物化視圖的更新操作只支援全量更新,不支援累加式更新。

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

相關命令