当知道源表已更新时,可以手动刷新 Databricks SQL 创建的管道(具体化视图或流式处理表)。 但是,您还可以按时间、源表更新或通过编排来设置刷新计划。 本页介绍如何为管道创建计划。
创建计划
可以将 Databricks SQL 管道配置为根据定义的计划自动刷新,或者在上游数据发生更改时触发。 下表显示了计划刷新的不同选项。
| 方法 | 说明 | 示例用例 |
|---|---|---|
| 手动 | 使用 SQL REFRESH 语句或通过工作区 UI 按需刷新。 |
开发、测试、即席更新。 |
TRIGGER ON UPDATE |
计划管道,以便在上游数据更改时自动刷新。 | 具有数据新鲜度服务级别协议或不可预知刷新周期的生产工作负载。 |
SCHEDULE |
设置管道以在预定的时间间隔刷新。 | 可预测的基于时间的刷新要求。 |
| 作业中的 SQL 任务 | 刷新通过 Lakeflow 作业进行编排。 | 具有跨系统依赖项的复杂管道。 |
即使计划刷新,也可以随时运行手动刷新(如果需要更新的数据)。
手动刷新
若要手动刷新管道,可以从 Databricks SQL 调用刷新,或使用工作区 UI。
REFRESH 语句
若要使用 Databricks SQL 刷新管道,请执行以下作:
在
SQL 编辑器,运行以下语句:
REFRESH MATERIALIZED VIEW <table-name>;对于流式处理表,请使用
REFRESH STREAMING TABLE。
有关详细信息,请参阅 REFRESH(具体化视图或流式处理表)。
工作区 UI
若要在工作区 UI 中刷新管道,请执行以下操作:
- 在 Azure Databricks 工作区中,单击“
作业和管道。
- 从列表中选择要刷新的管道。
- 单击“开始”按钮。
当管道刷新时,UI 中会显示更新。
更新时触发
当上游源数据发生更改时,子 TRIGGER ON UPDATE 句会自动刷新管道。 这样就无需跨管道协调计划。 数据集保持最新状态,无需用户知道上游作业何时完成或维护复杂的计划逻辑。
这是生产工作负荷的建议方法,尤其是在上游依赖项未按可预测的计划运行时。 在更新时配置触发器后,管道会监视其源表,并在检测到任何上游源中的更改时自动刷新。
局限性
- 上游依赖项限制:管道最多可以监视 10 个上游表和 30 个上游视图。 对于更多依赖项,请将逻辑操作拆分到多个管道中。
- 工作区限制:每个工作区最多可以存在 1,000 个管道
TRIGGER ON UPDATE。 如果需要超过 1,000 个,请联系 Databricks 支持部门。 - 最小间隔:最小触发器间隔为 1 分钟。
以下示例演示如何在定义管道时在更新时设置触发器。
在更新时创建带有触发器的管道
要创建一个在源数据更改时自动刷新的管道,请在TRIGGER ON UPDATE语句中包含CREATE子句。
以下示例创建了一个流式表,该表在源 orders 表更新时读取客户订单并进行刷新。
CREATE OR REFRESH STREAMING TABLE catalog.schema.customer_orders
TRIGGER ON UPDATE
AS SELECT
o.customer_id,
o.name,
o.order_id
FROM catalog.schema.orders o;
限制刷新频率
如果上游数据频繁刷新,则用于 AT MOST EVERY 限制视图刷新和限制计算成本的频率。 当源表频繁更新但下游使用者不需要实时数据时,这非常有用。 关键字 INTERVAL 在时间值之前是必需的。
以下示例限制流式处理表最多每 5 分钟刷新一次,即使源数据更改频率更高:
CREATE OR REFRESH STREAMING TABLE catalog.schema.customer_orders
TRIGGER ON UPDATE AT MOST EVERY INTERVAL 5 MINUTES
AS SELECT
o.customer_id,
o.name,
o.order_id
FROM catalog.schema.orders o;
定时刷新
可以直接在管道定义中定义刷新计划,以固定时间间隔刷新视图。 当已知数据更新节奏且需要可预测的刷新时间时,此方法非常有用。
当有刷新计划时,如果想要更新的数据,你仍然可以随时运行手动刷新。
Databricks 支持两种计划语法: SCHEDULE EVERY 用于简单间隔和 SCHEDULE CRON 精确计划。 关键字 SCHEDULE 在 SCHEDULE REFRESH 语义上是等效的。
有关 SCHEDULE 子句语法和用法的详细信息,请参阅 CREATE STREAMING TABLE SCHEDULE 子句 或 CREATE MATERIALIZED VIEW SCHEDULE 子句。
创建计划后,会自动将新的 Databricks 作业配置为处理更新。
若要查看计划,请执行以下操作之一:
- 在 Azure Databricks UI 中从 SQL 编辑器运行
DESCRIBE EXTENDED语句。 请参阅 DESCRIBE TABLE。 - 使用目录资源管理器查看数据集。 计划列在“概述”选项卡上的“刷新状态”下。 请参阅什么是目录资源管理器?。
以下示例演示如何使用计划创建具体化视图:
计划每个时间间隔
此示例每隔 5 分钟计划一次刷新:
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.hourly_metrics
SCHEDULE EVERY 1 HOUR
AS SELECT
date_trunc('hour', event_time) AS hour,
count(*) AS events
FROM catalog.schema.raw_events
GROUP BY 1;
使用 cron 调度任务
此示例每隔 15 分钟计划一次刷新,时间在 UTC 时区的四分之一小时:
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.regular_metrics
SCHEDULE CRON '0 */15 * * * ?' AT TIME ZONE 'UTC'
AS SELECT
date_trunc('minute', event_time) AS minute,
count(*) AS events
FROM catalog.schema.raw_events
WHERE event_time > current_timestamp() - INTERVAL 1 HOUR
GROUP BY 1;
作业中的 SQL 任务
可以通过 Lakeflow 作业,通过创建包含 REFRESH 命令的 SQL 任务来实现管道刷新协调。 此方法使用作业将管道刷新集成到现有编排中。
可以通过两种方法创建刷新流式表的作业:
-
在 SQL 编辑器中:编写
REFRESH命令并单击“ 计划 ”按钮,直接从查询创建作业。 -
从“作业”界面中:创建一个新作业,添加 SQL 任务类型,并使用
REFRESHBLE命令附加 SQL 查询或笔记本。
以下示例演示刷新流式处理表的 SQL 任务中的 SQL 语句:
REFRESH STREAMING TABLE catalog.schema.sales;
此方法适用于以下情况:
- 复杂的多步骤管道跨系统具有依赖关系。
- 需要与现有作业业务流程集成。
- 需要作业级警报和监视。
SQL 任务同时使用附加到作业的 SQL 仓库和执行刷新的无服务器计算。 如果使用基于流式处理表定义的计划来满足要求,切换到 TRIGGER ON UPDATE 或 SCHEDULE 可以简化工作流。
在现有管道中添加一个时间表
若要在创建后设置计划,请使用 ALTER STREAMING TABLE 或 ALTER MATERIALIZED VIEW 语句。 例如:
-- Alters the schedule to refresh the streaming table when its upstream
-- data gets updated.
ALTER STREAMING TABLE sales
ADD TRIGGER ON UPDATE;
修改现有计划或触发器
如果管道现已具有计划或触发器关联,请使用 ALTER SCHEDULE 或 ALTER TRIGGER ON UPDATE 来更改刷新配置。 这适用于从一个计划更改为另一个计划、从一个触发器更改为另一个触发器,或在计划与触发器之间切换。
以下示例将现有计划更改为每隔 5 分钟刷新一次:
ALTER STREAMING TABLE catalog.schema.my_table
ALTER SCHEDULE EVERY 5 MINUTES;
删除计划或触发器
若要删除计划,请使用 ALTER ... DROP:
ALTER STREAMING TABLE catalog.schema.my_table
DROP SCHEDULE;
跟踪刷新状态
可以通过在管道 UI 中查看管道,或通过查看数据集的命令返回的DESCRIBE EXTENDED来查看刷新状态。
DESCRIBE TABLE EXTENDED <table-name>;
或者,可以在目录资源管理器中查看数据集,并在其中查看刷新状态:
- 点击边栏中的
目录。
- 在左侧的目录资源管理器树中,打开目录并选择数据集所在的架构。
- 打开所选架构下的 表 项,然后单击流表或物化视图。
在此处,可以使用数据集名称下的选项卡查看和编辑有关数据集的信息,包括:
- 刷新状态和历史记录
- 表架构
- 示例数据(需要活动计算)
- 权限
- 数据沿袭,包括此数据集所依赖的表和其他管道
- 深入了解使用情况
- 您为此数据集创建的监视器
停止正在进行的刷新
若要在 Azure Databricks UI 中停止活动刷新,请在 “管道详细信息 ”页中单击“ 停止 ”以停止管道更新。 还可以在 Pipelines REST API 中使用 Databricks CLI 或 POST /api/2.0/pipelines/{pipeline_id}/stop 操作停止刷新。
查看计划刷新的运行历史记录
如果在目录资源管理器中打开数据集,工作区右侧的详细信息窗格会显示 “刷新计划”。 单击计划(例如 每 1 小时)链接会将你转到由系统托管的作业页面,该页面负责运行该计划。 可以查看运行历史记录,包括过去 48 小时的运行图,包括成功或失败和花费的时间。 可以单击指定运行以获取更多详细信息。
您无法编辑此系统管理的任务。 若要更改调度,请编辑管道的定义或使用CREATE OR REFRESH或ALTER。 请参阅 “修改现有计划”或“触发器”。
刷新超时
管道刷新运行时有一个超时设置,限制其运行时长。 对于在 2025 年 8 月 14 日或之后创建或更新的 Databricks SQL 管道,通过运行 CREATE OR REFRESH 更新时,超时时间将被记录下来。
-
STATEMENT_TIMEOUT如果已设置,则使用该值。 请参阅 STATEMENT_TIMEOUT。 - 否则,将使用用于执行命令的 SQL 数据仓库的超时。
- 如果仓库未配置超时,则默认应用 2 天。
超时时间用于初始创建时,但也用于随后的计划刷新。
对于上次在 2025 年 8 月 14 日之前更新的流式处理表,超时设置为 2 天。
示例:为刷新设置超时 可以通过在创建或更新数据集时设置语句级超时来显式控制刷新的运行时间:
SET STATEMENT_TIMEOUT = '6h';
CREATE OR REFRESH MATERIALIZED VIEW my_catalog.my_schema.my_mv
SCHEDULE EVERY 12 HOURS
AS SELECT * FROM large_source_table;
这会设置每 12 小时刷新一次具体化视图,如果刷新时间超过 6 小时,则会超时并等待下一次计划的刷新。
定时刷新如何处理超时
仅当显式运行 CREATE OR REFRESH时,才会同步超时。
- 预定的刷新操作将继续使用在最近一次
CREATE OR REFRESH捕获的超时时间。 - 仅更改仓库超时不会影响现有的计划的刷新。
重要
更改仓库超时后,再次运行 CREATE OR REFRESH ,以将新的超时设置应用于今后的计划刷新。
获取计划刷新的通知
重要
DDL 计划刷新功能的通知处于 Beta 版中。 工作区管理员可以从 “预览 ”页中控制对此功能的访问,方法是选择加入 System-Managed 作业进行具体化视图和流式处理表 预览。 请参阅 Manage Azure Databricks 预览版。
为管道创建计划时,可以对其进行编辑以获取通知。 有多种方法可以计划管道,并获取通知取决于所选方法中的哪一种:
使用作业进行计划:若要从 Lakeflow 作业中的 SQL 任务获取通知,请编辑任务并添加通知。 请参阅用于作业的 SQL 任务。
你可以选择各种选项来接收通知,以及如何接收通知。 请参阅 在任务上添加通知功能
使用
SCHEDULE子句进行计划:若要从 SQL 定义中的子句计划的SCHEDULE管道中获取通知,请将其编辑在 目录资源管理器中:在目录资源管理器中打开数据集。
在“ 概述 ”选项卡上的“ 刷新计划”下,单击
,编辑要接收通知的计划。
在 “更多选项”下,添加或修改通知。
可以选择通过电子邮件收到计划刷新的开始、成功或失败的通知。 默认情况下,所有者仅在失败时收到通知。
该电子邮件包含一个链接,用于获取协调您计划的系统管理作业的运行历史。 请参阅 查看计划刷新的运行历史记录。
为计划刷新选择性能模式
通过 UI 运行时,管道使用无服务器计算以性能优化模式运行。
对于在 SQL 定义中 计划的 管道,可以使用目录资源管理器中的 性能优化 设置选择无服务器计算性能模式。 禁用此设置(默认值)时,管道使用标准性能模式。 标准性能模式旨在降低可接受略高启动延迟的工作负荷的成本。 使用标准性能模式的无服务器工作负荷通常在触发后四到六分钟内启动,具体取决于计算可用性和优化的计划。
启用性能优化后,管道会针对性能进行优化,从而加快对时间敏感工作负荷的启动和执行速度。
这两种模式使用相同的 SKU,但标准性能模式消耗的 DBU 较少,这反映了较低的计算使用量。
重要
修改计划更新的性能模式为 Beta。 工作区管理员可以从 “预览 ”页中控制对此功能的访问,方法是选择加入 System-Managed 作业进行具体化视图和流式处理表 预览。 请参阅 Manage Azure Databricks 预览版。
默认情况下,管道在 UI 中以交互方式运行或使用 SQL 任务进行计划时使用性能优化模式,并在计划时使用标准模式。 要为定义中的 SCHEDULE 子句安排的管道设置计算模式,请在目录浏览器中编辑计划。
- 在目录资源管理器中打开数据集。
- 在“ 概述 ”选项卡上的“ 刷新计划”下,单击
,编辑要修改的计划。
- 勾选 性能优化 以使用性能优化模式进行将来的计划刷新。