用途
本技能用于在 Databricks Unity Catalog 中定义、创建、查询和管理受治理的业务指标(Metric Views)。核心思路是在 YAML 中定义可复用的指标,将度量(measure)定义与维度(dimension)分组分离,从而支持灵活查询。
主要能力
- 定义标准化业务指标,如收入、订单数、转化率。
- 构建可跨仪表板、Genie 和 SQL 查询共享的 KPI 层。
- 创建复杂聚合指标,包括比率、去重计数、过滤度量。
- 定义窗口度量,如移动平均、累计合计、同比环比、年初至今(YTD)。
- 在指标定义中通过连接建模星型或雪花模式。
- 启用物化以预计算指标聚合。
使用方式
前置条件
- Databricks Runtime 17.2+(用于 YAML 版本 1.1);17.3+ 支持语义元数据(同义词 / display_name / format)。
- 具有 CAN USE 权限的 SQL 仓库。
- 对源表具有 SELECT 权限,在目标 schema 中具有 CREATE TABLE + USE SCHEMA 权限。
决策门槛:能否作为指标视图
在编写前,需确认度量在查询时可重新聚合。可加性的 SUM/COUNT、按单元格重新计算的 COUNT(DISTINCT)、MEASURE() 比率(最后相除)以及受支持的窗口度量(尾随 / 累计 / 同比环比)均可正确重新聚合,是有效的指标视图度量。
若出现以下情况,则不适合作为指标视图,应改为编写受治理的 Unity Catalog SQL 函数(使用 databricks-dbsql 构建),并作为受信任的注册 SQL 函数暴露给 Genie:
- 在查询粒度上不可加——跨维度求和会重复计数。去重实体计数是典型陷阱:一个实体出现在两个属性值下仍是一个实体,因此按单元格的去重计数不得跨任意多属性交叉求和。
- 按实体计算后再聚合,且按实体步骤不是和/计数/和之比——例如跨两个周期的按实体最小/最大值,或按实体去重计数的阈值。
- 依赖选择——结果随用户筛选而重新分布(如“其他所有”桶会改变每个单元格)。
- 迭代式——重复直到收敛(如面板重加权)。
- 返回一组表而非单个度量(如源×目标矩阵加每行净值)。
一个度量可以大部分是指标视图,其中一部分提升为函数(例如渗透率 = 可加性买家 ÷ 基数,最后相除——但短窗口修正或任意多属性交叉 / 按实体阈值应放入函数)。将棘手步骤预计算到基础/辅助视图仅适用于固定定义——这是性能选择,对所有切片一次性确定。如果度量必须响应 Genie 中用户的运行时选择(任意交叉、参数或变化的除数),则需即时计算,无法预计算——它需要参数化的受治理 SQL 函数,而非预聚合视图。
指标视图生命周期
| 任务 | 参考 | 加载时机 |
|---|---|---|
| 创建 | metric-view-advisor.md | 任何创建任务——顾问处理完整工作流(分析 schema、分析源、建议、部署)。同时加载 create-patterns.md 作为 YAML 规范和模式参考。 |
| YAML 规范 / 模式 | create-patterns.md | 模式 1–12、完整 YAML 字段参考、格式注意事项、部署错误、快速参考。顾问的配套文件;也可直接加载用于模式查找。 |
| 查询 | query-patterns.md | 针对指标视图编写 SQL——MEASURE() 基础、过滤器、连接汇总、窗口度量、规则 1–3。 |
| Genie 集成 | metric-view-advisor.md §Genie Design Rules | 单一事实源规则、基础视图、领域组织、命名。代理元数据字段(comment、synonyms、display_name、format)见 create-patterns.md §YAML Field Reference。 |
典型流程:顾问 → 创建 → 查询/验证 → Genie 集成(如添加到 Genie Agent)。
使用声明式自动化捆绑包进行源码控制部署
要对指标视图进行源码控制,需提交其完整 SQL 定义并通过捆绑包管理的 SQL 作业执行。DABs 没有原生指标视图资源,但捆绑包管理的 SQL 作业可以应用已提交的定义:
# databricks.yml
bundle:
name: orders_metrics
variables:
catalog: { default: main }
schema: { default: default }
warehouse_id: { default: "" }
resources:
jobs:
deploy_orders_metrics:
name: deploy_orders_metrics
parameters:
- name: catalog
default: ${var.catalog}
- name: schema
default: ${var.schema}
tasks:
- task_key: create_metric_view
sql_task:
warehouse_id: ${var.warehouse_id}
file:
path: ../src/orders_metrics.metric_view.sql
部署并运行:
databricks bundle deploy --target <TARGET> --profile <PROFILE>
databricks bundle run deploy_orders_metrics --target <TARGET> --profile <PROFILE>
参见官方指标视图捆绑包示例。
适用场景
- 定义标准化业务指标(收入、订单数、转化率)。
- 构建跨仪表板、Genie 和 SQL 查询共享的 KPI 层。
- 创建复杂聚合指标(比率、去重计数、过滤度量)。
- 定义窗口度量(移动平均、累计合计、同比环比、YTD)。
- 通过连接建模星型或雪花模式。
- 启用物化以预计算指标聚合。
限制
- 需要 Databricks Runtime 17.2+(YAML 1.1);语义元数据需要 17.3+。
- 需要具有 CAN USE 权限的 SQL 仓库,以及对源表的 SELECT 权限和目标 schema 的 CREATE TABLE + USE SCHEMA 权限。
- 不适用于在查询粒度上不可加、按实体计算后聚合、依赖选择、迭代式或返回一组表的度量;这些应改用受治理的 SQL 函数。
- 预计算仅适用于固定定义;响应运行时选择的度量无法预计算。
- DABs 没有原生指标视图资源,需通过捆绑包管理的 SQL 作业部署。
相关技能
- databricks-genie-agents——创建、管理和验证消费此处构建的指标视图的 Genie Agents。Genie 的指标视图设计规则见顾问 §Genie Design Rules;查询规则见 query-patterns.md。
- databricks-aibi-dashboards——在指标视图之上构建 AI/BI 仪表板。
- databricks-data-discovery——在创建指标视图前探索数据;回答工作区中的问题。
- databricks-dabs——通过捆绑包管理的作业对指标视图 SQL 定义进行源码控制和部署。
资源
- Metric Views Documentation
- YAML Syntax Reference
- Joins
- Window Measures (Experimental)
- Materialization
- MEASURE() Function