更新物化視圖。
命令概覽
更新物化視圖的命令包括:
更新物化視圖
當物化視圖的資料對應的表或分區產生插入、覆寫、更新、刪除等操作時,物化視圖會自動失效,無法用於查詢改寫。您可以先查看物化檢視狀態,當物化視圖失效時,執行更新操作。查看物化檢視狀態操作,請參見查詢物化檢視狀態。
注意事項
物化視圖的更新操作只支援全量更新,不支援累加式更新。
您可以藉助於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:刪除已建立的物化視圖。