SuperAPI AI 工具集

databricks-metric-views

数据与分析

查看项目

更新于 10-15 12:59

技能介绍

用途

本技能用于在 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