适用于: Databricks SQL
允许执行以下任一操作:
- 添加用于刷新现有流式处理表的计划或触发器。
- 更改流式处理表的现有刷新计划或触发器。
- 删除流式处理表的刷新计划或触发器。 如果没有计划或触发器,则需要手动刷新对象以反映最新数据。
若要对表添加或更改批注,请使用 COMMENT ON。
语法
ALTER STREAMING TABLE table_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 ] }
参数
-
要更改其定义的流式处理表的名称。 名称不得包含时态规范。
附表
在表上添加或更改语句
SCHEDULE
TRIGGER
。SCHEDULE [ REFRESH ] schedule_clause
EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }
要安排定期进行的刷新,请使用
EVERY
语法。 如果指定了EVERY
语法,则会按照指定的间隔根据提供的值(如HOUR
、HOURS
、DAY
、DAYS
、WEEK
或WEEKS
)定期刷新流式处理表或具体化视图。 下表列出了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 UPDATE
在 Beta 版中。 若要在工作区中启用此功能,请联系 Databricks 代表。设置在上游数据源更新时刷新的表,最多每分钟一次。 设置一个值
AT MOST EVERY
,以便在刷新之间至少需要一个最短的时间。上游数据源必须是外部表或托管的 Delta 表(包括具体化视图或流式处理表),或者依赖项仅限于支持的表类型的托管视图。
启用 文件事件 可以使触发器更具性能,并增加触发器更新的一些限制。
trigger_interval
这是至少 1 分钟的 INTERVAL 语句。TRIGGER ON UPDATE
具有以下限制- 每个流式处理表使用表触发器的上游数据源不超过 10 个。
- 使用表触发器最多 50 个流式处理表或具体化视图(在上游数据源上启用文件事件会消除此限制)。
- 对于外部 Delta 表中的源数据,每个更改集的行数限制为 10,000 行(在上游数据源上启用文件事件会删除此限制)。
- 子
AT MOST EVERY
句默认为 1 分钟,不能小于 1 分钟。
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
必须是唯一的。
示例
-- Adds a schedule to refresh the streaming table once a day
-- at midnight in Los Angeles
> ALTER STREAMING TABLE my_st
ADD SCHEDULE CRON '0 0 0 * * ? *' AT TIME ZONE 'America/Los_Angeles';
-- Alters the schedule to run every 15 minutes for a streaming table
> ALTER STREAMING TABLE my_st
ALTER SCHEDULE EVERY 15 MINUTES;
-- Drops the schedule for a streaming table
> ALTER STREAMING TABLE my_st
DROP SCHEDULE;