ALTER MATERIALIZED VIEW

适用于:勾选“是” Databricks SQL

更改与视图关联的元数据。

允许执行以下任一操作:

  • 添加用于刷新现有具体化视图的计划。
  • 更改具体化视图的现有刷新计划。
  • 删除具体化视图的刷新计划。 如果删除了计划,则需要手动刷新对象以反映最新数据。

若要在视图上添加或更改批注,请使用 COMMENT ON

语法

ALTER MATERIALIZED VIEW view_name
  {
    { ADD | ALTER } schedule |
    DROP SCHEDULE |
    ALTER 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 ] }

参数

  • view_name

    要更改其定义的具体化视图的名称。 名称不得包含时态规范

  • 附表

    在具体化视图中添加或更改语句SCHEDULETRIGGER

    • SCHEDULE [ REFRESH ] schedule_clause

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

        要安排定期进行的刷新,请使用 EVERY 语法。 如果指定了 EVERY 语法,则会按照指定的间隔根据提供的值(如 HOURHOURSDAYDAYSWEEKWEEKS)定期刷新流式处理表或具体化视图。 下表列出了 number 可接受的整数值。

        时间单位 整数值
        HOUR or HOURS 1 < = H < = 72
        DAY or DAYS 1 < = D < = 31
        WEEK or WEEKS 1 < = W < = 8

        注意

        包含的时间单位的单数形式和复数形式在语义上是等效的。

      • CRON cron_string [ AT TIME ZONE timezone_id ]

        使用 qartz 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 UPDATEBeta 版中。 若要在工作区中启用此功能,请联系 Databricks 代表。

      设置具体化视图,以便在每次更新上游数据源时刷新一次。 设置一个值 AT MOST EVERY ,以便在刷新之间至少需要一个最短的时间。

      上游数据源必须是外部表或托管的 Delta 表(包括具体化视图或流式处理表),或者依赖项仅限于支持的表类型的托管视图。

      启用 文件事件 可以使触发器更具性能,并增加触发器更新的一些限制。

      trigger_interval这是至少 1 分钟的 INTERVAL 语句。

      TRIGGER ON UPDATE 具有以下限制

      • 每个具体化视图使用表触发器的上游数据源不超过 10 个。
      • 使用表触发器最多 50 个流式处理表或具体化视图(在上游数据源上启用文件事件会消除此限制)。
      • 对于外部 Delta 表中的源数据,每个更改集的行数限制为 10,000 行(在上游数据源上启用文件事件会删除此限制)。
      • AT MOST EVERY 句默认为 1 分钟,不能小于 1 分钟。
  • 修改 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 [, ...] )

    重要

    此功能目前以公共预览版提供。

    从具体化视图中删除标记。 您需要有 APPLY TAG 权限才能从具体化视图中删除标记。

    • tag_name

      文本 STRING。 在物化视图或列内,tag_name 必须是唯一的。

示例

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

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

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