Unity Catalog 指标视图

重要

此功能目前以公共预览版提供。

指标视图提供了一种集中方法,用于定义和管理一致、可重用和管理的核心业务指标。 本页介绍指标视图、如何定义指标视图、控制访问并在下游工具中查询它们。

什么是指标视图?

指标视图将复杂的业务逻辑抽象化为集中式定义,使组织能够定义关键绩效指标一次,并在仪表板、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 定义。 如果你是指标视图所有者,则可以编辑定义。 查看详细信息或编辑现有指标视图:

  1. 单击边栏中的数据图标。目录
  2. 单击要查看的指标视图的名称。
  3. 单击 “编辑” 以打开 YAML 编辑器。

请参阅指标视图 YAML 参考。 有关使用 SQL 编辑指标视图的信息,请参阅 ALTER VIEW

管理指标视图权限

指标视图是 Unity 目录安全对象,遵循与其他视图相同的权限模型。 请参阅 Unity Catalog 特权和安全对象

使用指标视图

可以像标准视图一样查询指标视图。 从连接到 SQL 仓库或运行 Databricks Runtime 16.4 或更高版本的其他计算资源的任何 SQL 编辑器中运行查询。 指标视图查询中的所有度量值都必须使用 MEASURE 聚合函数。

有关完整详细信息和语法,请参阅 measure 聚合函数

还可以在整个 Azure Databricks 工作区中使用指标视图。 有关详细信息,请参阅关联的文档:

局限性

指标视图适用以下限制:

  • 指标视图不支持世系。
  • 指标视图不支持 Delta Sharing。
  • 不支持湖仓一体监控。
  • 不支持数据分类Beta版)。
  • 在查询执行时不支持 JOIN 操作。 使用 CTE 联接数据源。
  • 不支持 SELECT *
  • 无法重新聚合度量值。 例如,不支持类似 SUM(MEASURE(measure_name)) 表达式。 仅将聚合应用于基字段,而不是聚合度量值。
  • 联接表不能包含 MAP 类型列。
  • MEASURE 表达式中不能合并开窗度量值和聚合基字段。