具体化视图的刷新操作

重要

Databricks SQL 中的具体化视图为公开预览版

具体化视图是包含针对一个或多个基表的 SQL 查询结果的数据库对象。 某些具体化视图可以增量刷新,并自动、增量地传播基表的更改。

本文介绍可应用于具体化视图的刷新操作类型,并标识支持增量刷新的 SQL 操作、关键字和子句。

注意

若要创建和使用具体化视图,工作区必须满足要求

刷新类型

刷新操作包括以下类型:

  • 增量刷新:增量刷新会处理上次刷新后基础数据中的更改,然后将该数据追加到表中。 根据基表和包含的操作,某些类型的具体化视图只能进行增量刷新。
  • 完全刷新:完全刷新会截断表并使用最新定义重新处理源中所有可用的数据。 对不保留完整数据历史记录或保留期较短的源(如 Kafka),不建议执行完全刷新,因为完全刷新会截断现有数据。 如果数据在源中不再可用,则可能无法恢复旧数据。

使用 SQL 仓库或无服务器 Delta Live Tables 管道创建具体化视图时,如果支持其查询,它们会自动以增量方式刷新。 如果查询包含增量刷新不支持的表达式,则将执行完全刷新,这可能会导致额外的成本。 若要确定使用哪种刷新类型,请参阅确定是使用增量刷新还是完全刷新

具体化视图增量刷新支持

下表列出了 SQL 关键字或子句对增量刷新的支持。 对于标有星号 (*) 的关键字和子句,要求启用行跟踪才能进行增量刷新。 请参阅对 Delta 表使用行跟踪

SQL 关键字或子句 增量刷新支持
SELECT 表达式* 是的,支持包括确定性的内置函数和不可变用户定义函数 (UDF) 的表达式。
GROUP BY
WITH 是,支持通用表表达式。
UNION ALL*
FROM 支持的基表包括增量表、具体化视图和流式处理表。
WHEREHAVING* 支持筛选器子句,例如 WHEREHAVING
INNER JOIN*
LEFT OUTER JOIN
FULL OUTER JOIN
RIGHT OUTER JOIN
OVER 是的。 PARTITION_BY 必须为窗口函数的增量化指定列。
QUALIFY
EXPECTATIONS 否。 使用预期的具体化视图始终完全刷新。

注意

不支持非确定性函数,例如 CURRENT_TIMESTAMP