重要
此功能目前以公共预览版提供。
指标视图提供了一种集中方法,用于定义和管理一致、可重用和管理的核心业务指标。 本页介绍指标视图、如何定义指标视图、控制访问并在下游工具中查询它们。
什么是指标视图?
指标视图将复杂的业务逻辑抽象化为集中式定义,使组织能够定义关键绩效指标一次,并在仪表板、Genie 空间和警报等报告工具中一致地使用这些指标。 指标视图以 YAML 格式定义,并在 Unity 目录中注册。 可以使用 SQL 或目录资源管理器 UI 创建它们。 与任何其他表或视图一样,可以使用 SQL 查询指标视图。
指标视图指定一组 指标定义,这些定义包括基于数据源的 维度 和 度量值;如果使用联接逻辑,则指定多个源。 在度量视图定义中的 source
可以是视图、表或 SQL 查询。 仅支持在视图和表上进行联接。
维度是一个分类属性,用于组织和筛选数据,例如产品名称、客户类型或区域。 维度提供有效分析度量值所需的标签和分组。
度量值是汇总业务活动的值,通常使用聚合函数(例如SUM()
或AVG()
)。 度量值的定义独立于维度,允许用户在运行时按任何维度聚合度量值。 例如,定义 total_revenue
度量值可按客户、供应商或区域进行聚合。 度量通常在报表和仪表板中用作 KPI。
以下代码块演示了度量值和维度在指标视图中如何定义的示例:
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: Order Month
expr: DATE_TRUNC('MONTH', o_orderdate)
- name: Order Status
expr: CASE
WHEN o_orderstatus = 'O' then 'Open'
WHEN o_orderstatus = 'P' then 'Processing'
WHEN o_orderstatus = 'F' then 'Fulfilled'
END
- name: Order Priority
expr: SPLIT(o_orderpriority, '-')[1]
measures:
- name: Order Count
expr: COUNT(1)
- name: Total Revenue
expr: SUM(o_totalprice)
- name: Total Revenue per Customer
expr: SUM(o_totalprice) / COUNT(DISTINCT o_custkey)
- name: Total Revenue for Open Orders
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')
指标视图与标准视图的比较
标准视图通常设计为回答特定业务问题。 它们通常包括创建视图时必须指定的聚合逻辑和维度分组。 当用户想要查询原始视图中不包含的维度时,这可能会导致问题。 更复杂的度量值(如比率或非重复计数)通常无法重新聚合,否则会返回不正确的结果。
指标视图 允许作者独立于用户筛选和分组数据的方式定义度量值和维度。 这种分离允许系统根据用户的选择生成正确的查询,同时保留一致的集中式指标逻辑。
示例:
假设你想要分析不同地理级别的每个不同客户的收入。 使用标准视图时,您需要为每个分组(例如按州、地区或国家/地区)创建单独的视图,或者提前使用 GROUP BY CUBE()
计算所有组合,然后进行筛选。 这些解决方法会增加复杂性,并可能导致性能和治理问题。
使用指标视图,只需定义一次指标,在查询时可以按不同维度对其进行分组。 例如, 收入之和除以独立客户数量。 然后,用户可以按任何可用的地理维度进行分组。 查询引擎在后台重写查询以执行正确的计算,而不考虑数据的分组方式。
指标视图的用例
指标视图在以下情况下非常有用:
- 你需要跨团队和工具标准化指标定义。
- 你想要披露无法安全重新聚合的指标,例如比率或独特计数。
- 你想要为业务用户启用灵活的切片和筛选,同时通过 SQL 保持透明度和治理。
此方法有助于防止不一致、减少重复,并在整个组织中处理业务指标时简化用户体验。
定义指标视图
具有 CREATE TABLE
架构特权 的用户可以创建指标视图。 必须对源对象至少拥有 SELECT
特权。 可以使用目录资源管理器 UI 中的 YAML 编辑器或使用 SQL 创建指标视图。
指标视图的 YAML 定义包括六个顶级字段:
version
: 默认值为0.1
. 这是指标视图规范的版本。source
: 指标视图的源数据。 这可以是表状结构的资产或 SQL 查询。joins
: 可选。 用于将 JOIN 下定义的事实表与维度表作为星型模式模型进行左source
。filter
: 可选。 适用于所有查询的 SQL 布尔表达式;等效于子WHERE
句。dimensions
: 维度定义的数组,包括维度名称和表达式。measures
: 聚合表达式列的数组。
指标视图是可组合的,允许在单个视图中构建分层的可重用逻辑。 维度可以引用以前定义的维度,度量值可以引用任何维度或以前定义的度量值。 定义新维度或度量值时,还可以引用度量视图中已定义联接的列。
以下示例说明如何使用 Azure Databricks UI 创建指标视图。 有关使用 SQL 定义指标视图的信息,请参阅 CREATE VIEW 。
有关演示如何创建指标视图的完整示例,请参阅 “创建指标”视图。
查看或编辑指标视图
具有 SELECT
指标视图特权的任何人都可以查看详细的 YAML 定义。 如果你是指标视图所有者,则可以编辑定义。 查看详细信息或编辑现有指标视图:
- 单击边栏中的
目录。
- 单击要查看的指标视图的名称。
- 单击 “编辑” 以打开 YAML 编辑器。
请参阅指标视图 YAML 参考。 有关使用 SQL 编辑指标视图的信息,请参阅 ALTER VIEW 。
管理指标视图权限
指标视图是 Unity 目录安全对象,遵循与其他视图相同的权限模型。 请参阅 Unity Catalog 特权和安全对象。
使用指标视图
可以像标准视图一样查询指标视图。 从连接到 SQL 仓库或运行 Databricks Runtime 16.4 或更高版本的其他计算资源的任何 SQL 编辑器中运行查询。 指标视图查询中的所有度量值都必须使用 MEASURE
聚合函数。
有关完整详细信息和语法,请参阅 measure
聚合函数。
还可以在整个 Azure Databricks 工作区中使用指标视图。 有关详细信息,请参阅关联的文档:
局限性
指标视图适用以下限制: