具体化视图的刷新操作
重要
Databricks SQL 中的具体化视图为公开预览版。
具体化视图是包含针对一个或多个基表的 SQL 查询结果的数据库对象。 某些具体化视图可以增量刷新,并自动、增量地传播基表的更改。
本文介绍可应用于具体化视图的刷新操作类型,并标识支持增量刷新的 SQL 操作、关键字和子句。
注意
若要创建和使用具体化视图,工作区必须满足要求。
刷新类型
刷新操作包括以下类型:
- 增量刷新:增量刷新会处理上次刷新后基础数据中的更改,然后将该数据追加到表中。 根据基表和包含的操作,某些类型的具体化视图只能进行增量刷新。
- 完全刷新:完全刷新会截断表并使用最新定义重新处理源中所有可用的数据。 对不保留完整数据历史记录或保留期较短的源(如 Kafka),不建议执行完全刷新,因为完全刷新会截断现有数据。 如果数据在源中不再可用,则可能无法恢复旧数据。
使用 SQL 仓库或无服务器 Delta Live Tables 管道创建具体化视图时,如果支持其查询,它们会自动以增量方式刷新。 如果查询包含增量刷新不支持的表达式,则将执行完全刷新,这可能会导致额外的成本。 若要确定使用哪种刷新类型,请参阅确定是使用增量刷新还是完全刷新。
具体化视图增量刷新支持
下表列出了 SQL 关键字或子句对增量刷新的支持。 对于标有星号 (*) 的关键字和子句,要求启用行跟踪才能进行增量刷新。 请参阅对 Delta 表使用行跟踪。
SQL 关键字或子句 | 增量刷新支持 |
---|---|
SELECT 表达式* |
是的,支持包括确定性的内置函数和不可变用户定义函数 (UDF) 的表达式。 |
GROUP BY |
是 |
WITH |
是,支持通用表表达式。 |
UNION ALL * |
是 |
FROM |
支持的基表包括增量表、具体化视图和流式处理表。 |
WHERE 、HAVING * |
支持筛选器子句,例如 WHERE 和 HAVING 。 |
INNER JOIN * |
是 |
LEFT OUTER JOIN |
是 |
FULL OUTER JOIN |
是 |
RIGHT OUTER JOIN |
是 |
OVER |
是的。 PARTITION_BY 必须为窗口函数的增量化指定列。 |
QUALIFY |
是 |
EXPECTATIONS |
否。 使用预期的具体化视图始终完全刷新。 |
注意
不支持非确定性函数,例如 CURRENT_TIMESTAMP
。