共用方式為


ALTER MATERIALIZED VIEW

適用於:勾選為「是」 Databricks SQL

修改與視圖相關聯的元數據。

可讓您執行下列任何動作:

  • 新增重新整理現有具體化檢視的排程。
  • 變更實體化視圖的現有重新整理計畫。
  • 移除具體化檢視的重新整理排程。 如果排程被取消,則必須手動更新物件,以反映最新的數據。

若要在具體化視圖上新增或修改評論,請使用 COMMENT ON

注意

若以與定義 SQL 相矛盾的方式修改管線建立的資料集,可能會導致部分變更被還原。 請參閱 「使用 ALTER Lakeflow Spark 宣告式管線的指令」。

語法

ALTER MATERIALIZED VIEW view_name
  {
    { ADD | ALTER } schedule |
    DROP SCHEDULE |
    ALTER COLUMN column_clause |
    SET ROW FILTER clause |
    DROP ROW FILTER |
    SET TAGS clause |
    UNSET TAGS clause }

  schedule
    { SCHEDULE [ REFRESH ] schedule_clause |
      TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ] }

  schedule_clause
    { EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
      CRON cron_string [ AT TIME ZONE timezone_id ] }

  column_clause
    column_identifier
    { COMMENT clause |
      SET MASK clause |
      DROP MASK |
      SET TAGS clause |
      UNSET TAGS clause }

參數

  • view_name

    要變更定義的具體化檢視的名稱。 名稱不得包含時態性規格

  • 附表

    在具體化檢視上新增或變更 SCHEDULE or TRIGGER 陳述式。

    注意

    你無法用這個指令修改用 Lakeflow Spark 宣告式管線建立的實體化視圖的排程。 使用 管線編輯器

    • SCHEDULE [ REFRESH ] schedule_clause

      • EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }

        若要排程定期發生的重新整理,請使用 EVERY 語法格式。 如果指定了 EVERY 語法,串流數據表或實體化檢視將根據提供的值,例如 HOURHOURSDAYDAYSWEEKWEEKS,按照指定的時間間隔進行定期刷新。 下表列出 number接受的整數值。

        時間單位 整數值
        HOUR or HOURS 1 <= 高 <= 72
        DAY or DAYS 1 <= D <= 31
        WEEK or WEEKS 1 <= 寬 <= 8

        注意

        內含時間單位的單數和複數形式在語意上相等。

      • CRON cron_string [ AT TIME ZONE timezone_id ]

        使用 石英排程器的 cron 值來排程重新整理。 有效的 time_zone_values 會被接受。 不支援 AT TIME ZONE LOCAL

        如果 AT TIME ZONE 不存在,則會使用工作階段時區。 如果 AT TIME ZONE 不存在且未設定會話時區,則會擲回錯誤。 SCHEDULE 在語意上相當於 SCHEDULE REFRESH

    • TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ]

      這很重要

      TRIGGER ON UPDATE 功能處於 測試階段

      將具體化檢視設定為在更新上游資料來源時重新整理,最多每分鐘一次。 設定值 , AT MOST EVERY 以要求重新整理之間至少有最短時間。

      上游資料來源必須是外部或受控 Delta 資料表 (包括具體化檢視或串流資料表),或相依性僅限於支援資料表類型的受控檢視。

      啟用 檔案事件 可以讓觸發程式更有效率,並增加觸發程式更新的一些限制。

      trigger_interval 至少 1 分鐘的 INTERVAL 陳述式。

      TRIGGER ON UPDATE 有以下限制

      • 使用 TRIGGER ON UPDATE時,每個具體化檢視的上游資料來源不超過 10 個。
      • 最多可以使用 TRIGGER ON UPDATE指定 1000 個串流資料表或具體化檢視。
      • AT MOST EVERY 句預設為 1 分鐘,且不能小於 1 分鐘。
  • DROP SCHEDULE

    移除了物質化視圖中的排程。

  • ALTER COLUMN clause

    參見 ALTER COLUMN 條款

  • SET ROW FILTER 條款

    這很重要

    這項功能目前處於 公開預覽版

    將數據列篩選函式加入具體化檢視。 具體化檢視的所有後續查詢都會接收函數評估為布爾值 TRUE的數據列子集。 這對於精細訪問控制用途很有用,其中函式可以檢查叫用使用者的身分識別或群組成員資格,以判斷是否要篩選特定數據列。

    建立後新增的列過濾器只會在下一次更新後傳入下游資料表。 對於連續管線,這需要重新啟動管線。

  • DROP ROW FILTER

    這很重要

    這項功能目前處於 公開預覽版

    如果有的話,從具體化檢視卸除數據列篩選。 未來的查詢將會從資料表傳回所有資料列,而不需要任何自動篩選。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    這很重要

    這項功能目前處於 公開預覽版

    將標籤套用至具體化檢視。 您必須擁有 APPLY TAG 將標籤新增至具體化檢視的許可權。

    • tag_name

      字面意義的 STRING。 在具體化檢視或資料欄中,tag_name 必須是唯一的。

    • tag_value

      字面意義的 STRING

  • UNSET TAGS ( tag_name [, ...] )

    這很重要

    這項功能目前處於 公開預覽版

    從具體化檢視中移除標記。 您必須具有許可權,才能從具現化視圖中移除標籤。

    • tag_name

      字面意義的 STRING。 在具體化檢視或資料欄中,tag_name 必須是唯一的。

ALTER COLUMN 條款

這很重要

這項功能目前處於 公開預覽版

變更屬性或欄的位置。

語法

  ALTER COLUMN
    column_identifier
    { COMMENT comment |
      SET MASK mask_clause |
      DROP MASK |
      SET TAGS clause |
      UNSET TAGS clause }

參數

  • column_identifier

    要改變的欄位名稱。

  • COMMENT comment

    變更 column_name 欄的描述。 comment 必須是 STRING 文字表達式。

  • SET MASK 子句

    新增數據行遮罩函式來匿名敏感數據。 該欄的所有後續查詢都會接收到評估該函式於該欄上的結果,取代欄的原始值。 這對於細緻的存取控制很有用,功能可以檢查叫用使用者的身分識別或群組成員資格,以判斷是否要刪減值。

    建立後新增的欄位遮罩只會在下一次更新後傳入下游資料表。 對於連續管線,這需要重新啟動管線。

  • DROP MASK

    如果存在,請移除此欄的遮罩。 此數據行的未來查詢將會收到數據行的原始值。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    將標籤套用至欄位。 您必須有 APPLY TAG 許可權,才能將標籤新增至數據行。

    • tag_name

      字面意義的 STRINGtag_name 在資料表或資料行內必須是唯一的。

    • tag_value

      字面意義的 STRING

  • UNSET TAGS ( tag_name [, ...] )

    將欄位中給定的標籤移除。 您需要有 APPLY TAG 許可權,才能從數據行中移除標籤。

    • tag_name

      字面意義的 STRINGtag_name 在資料表或資料行內必須是唯一的。

範例

-- Adds a schedule to refresh the materialized view whenever its upstream data gets updated.
> ALTER MATERIALIZED VIEW my_mv
    ADD TRIGGER ON UPDATE;

-- Alters the schedule to refresh the materialized view when its upstream data
-- gets updated, and make sure the update frequency is no more than 1 update
-- per hour.
> ALTER MATERIALIZED VIEW my_mv
    ALTER TRIGGER ON UPDATE AT MOST EVERY INTERVAL 1 hour;

-- Alters the schedule to run every two hours for a materialized view
> ALTER MATERIALIZED VIEW my_mv
    ALTER SCHEDULE EVERY 2 HOURS;

-- Alters the schedule to refresh a materialized view once a day
-- at midnight in Los Angeles
> ALTER MATERIALIZED VIEW my_mv
    ALTER SCHEDULE CRON '0 0 0 * * ? *' AT TIME ZONE 'America/Los_Angeles';

-- Drops the schedule for a materialized view
> ALTER MATERIALIZED VIEW my_mv
    DROP SCHEDULE;

-- Adds a column comment
> ALTER MATERIALIZED VIEW my_mv
    ALTER COLUMN my_column_name COMMENT 'test'