本文介绍如何在 Databricks SQL 中监视和查询有关具体化视图的刷新数据。
在目录资源管理器中查看详细信息
查看有关具体化视图的信息的最简单方法是在目录资源管理器中查看。 目录资源管理器还允许查看刷新历史记录,包括日志,以及查看当前刷新的状态。
具体化视图的几个属性在目录资源管理器中不可用。 对于这些属性,或者要以编程方式获取信息,可以使用命令 DESCRIBE EXTENDED
。
使用 DESCRIBE EXTENDED
查看具体化视图详细信息
可以使用 DESCRIBE EXTENDED
命令以编程方式查看有关具体化视图的详细信息。 这包括:
- 最近已完成刷新的状态。
- 刷新计划。
- 具体化视图的列。
- 具体化视图的数据大小,以总字节数表示(不会在目录资源管理器中显示)。
- 具体化视图的存储位置(不会在目录资源管理器中显示)。
-- As table:
DESCRIBE TABLE EXTENDED sales;
-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;
查看具体化视图的刷新历史记录
若要查看有关具体化视图的操作状态,包括当前刷新和过去刷新,请查询 Lakeflow 声明性管道事件日志:
SELECT
*
FROM
event_log(TABLE(my_catalog.my_schema.sales))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
将 <fully-qualified-table-name>
替换为具体化视图的完全限定名称,包括目录和架构。
查看具体化视图发生的刷新类型
某些查询可以增量刷新。 如果无法执行增量刷新,则会改为执行完全刷新。
若要查看具体化视图的刷新类型,请查询事件日志:
SELECT
timestamp,
message
FROM
event_log(TABLE(my_catalog.my_schema.sales))
WHERE
event_type = 'planning_information'
ORDER BY
timestamp desc;
此命令的示例输出:
-
- 时间戳
- 消息
-
2025-03-21T22:23:16.497+00:00
Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.
有关刷新类型以及如何优化刷新的详细信息,请参阅 具体化视图的增量刷新。
使用查询历史记录监视运行
可以使用查询历史记录页访问查询详情和查询概况,这些查询概况有助于识别用于运行流式处理表更新的 Lakeflow 声明式管道中性能欠佳的查询和瓶颈。 有关可用于查询历史记录和查询配置文件的信息类型的概述,请参阅 查询历史记录 和 查询配置文件。
重要
此功能目前以公共预览版提供。 工作区管理员可以从“预览版”页启用此功能。 请参阅 “管理 Azure Databricks 预览版”。
与具体化视图相关的所有语句都显示在查询历史记录中。 可以使用“语句”下拉列表筛选器来选择任何命令并检查相关查询。 所有 CREATE
语句后都跟随一个在管道上异步执行的 REFRESH
语句。 这些 REFRESH
语句通常包括详细的查询计划,用于提供优化性能的见解。
若要访问 REFRESH
查询历史记录 UI 中的语句,请使用以下步骤:
- 单击
在左侧栏中打开 “查询历史记录 ”UI。
- 从“语句”下拉列表筛选器中选择 REFRESH REFRESH 复选框。
- 单击查询语句的名称可查看摘要详细信息,例如查询持续时间和聚合指标。
- 单击“ 查看查询配置文件 ”打开查询配置文件。 有关如何浏览查询概要文件的详细信息,请参阅 查询概要文件。
- (可选)使用“查询源”部分中的链接打开相关的查询或管道。
排查刷新失败的问题
注释
当你认为刷新应该是增量刷新,但执行的却是完整刷新时,若要排查原因,请首先检查是否已为所有源 Delta 表启用了行跟踪。 有关增量刷新的其他详细信息,请参阅 支持具体化视图增量刷新。
由于多种不同原因,刷新操作可能会失败。 例如:
- 具体化视图的所有者可能会失去
SELECT
对源表的访问权限。 - 源表可能具有与具体化视图查询定义不兼容的架构更改。
若要排查具体化视图刷新失败的问题,请执行以下操作:
- 点击边栏中的
目录。
- 在左侧的目录资源管理器树中,打开目录并选择具体化视图所在的架构。
- 单击“概述”选项卡中的“查看刷新详细信息”链接。
- 在管道详细信息页的底部的 “事件日志 ”选项卡中,单击“ 错误 ”以筛选出处理中的错误。
- 单击错误以查看详细信息,包括具体的错误消息。
这是一条示例错误消息:
org.apache.spark.sql.AnalysisException: [AMBIGUOUS_REFERENCE] Reference `customer_name` is ambiguous, could be: ['p'.'customer_name', 'u'.'customer_name']. SQLSTATE: 42704