ALTER STREAMING TABLE

适用于:勾选“是” Databricks SQL

允许执行以下任一操作:

  • 添加用于刷新现有流式处理表的计划或触发器。
  • 更改流式处理表的现有刷新计划或触发器。
  • 删除流式处理表的刷新计划或触发器。 如果没有计划或触发器,则需要手动刷新对象以反映最新数据。

若要添加或更改对流式处理表的注释,请使用 COMMENT ON

注意

以与定义 SQL 矛盾的方式更改管道创建的数据集可能会导致某些更改被撤销。 请参阅 ALTER 命令与 Lakeflow Spark 声明式管道配合使用

语法

ALTER STREAMING TABLE table_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 }

参数

  • table_name

    要更改其定义的流式处理表的名称。 名称不得包含时态规范

  • 附表

    在表上添加或更改语句SCHEDULETRIGGER

    注意

    您无法使用此命令修改通过 Lakeflow Spark 声明式管道创建的流表的计划表。 使用 管道编辑器

    • 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 ]

        使用 quartz 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 版中。

      设置在上游数据源更新时刷新的表,最多每分钟一次。 设置一个值 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 [, ...] )

    重要

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

    从流式处理表中删除标记。 你需要具有 APPLY TAG 权限才能从流式处理表中删除标记。

    • 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 streaming table whenever its upstream data gets updated.
> ALTER STREAMING TABLE my_st
    ADD TRIGGER ON UPDATE;

-- Alters the schedule to refresh the streaming table when its upstream data
-- gets updated, with no more than one update per hour.
> ALTER STREAMING TABLE my_st
    ALTER TRIGGER ON UPDATE AT MOST EVERY INTERVAL 1 hour;

-- Alters the schedule to run every one hour.
> ALTER STREAMING TABLE my_st
  ALTER SCHEDULE EVERY 1 HOUR;

-- Alters the schedule to refresh the streaming table once a day
-- at midnight in Los Angeles
> ALTER STREAMING TABLE my_st
  ALTER SCHEDULE CRON '0 0 0 * * ? *' AT TIME ZONE 'America/Los_Angeles';

-- Drops the schedule for a streaming table
> ALTER STREAMING TABLE my_st
  DROP SCHEDULE;

-- Adds a column comment
> ALTER STREAMING TABLE my_st
    ALTER COLUMN column_name COMMENT 'test'