目录资源管理器提供用于创建 指标视图的可视界面。 无需编写 YAML 定义即可以交互方式定义字段和度量值。
本页介绍如何在目录资源管理器界面中创建指标视图。 有关联接和高级度量值的更复杂的示例,请参阅 教程:使用联接和数据建模生成指标视图。
先决条件
在创建指标视图之前,请验证你是否具有以下权限:
-
SELECT对用作源的 类似表的资产 或 SQL 查询的特权。 -
CREATE TABLE和USE SCHEMA权限在您想要创建指标视图的架构中。 -
USE CATALOG在父目录上的权限。 -
CAN USE对运行 Databricks Runtime 17.3 或更高版本的 SQL 仓库或其他计算资源具有权限。
元存储管理员或目录所有者可以授予所有这些权限。 具有权限的架构所有者或用户 MANAGE 可以授予 USE SCHEMA 架构的权限和 CREATE TABLE 权限。
注释
Databricks Runtime 16.4 及更高版本支持创建指标视图。 此页面使用需要 Databricks Runtime 17.3 或更高版本的功能,因此 17.3 是本示例的最低要求。 单个 YAML 功能可能需要以后的运行时。 有关每个功能的最小运行时,请参阅 指标视图功能可用性。
创建指标视图
使用以下方法之一在目录资源管理器中创建指标视图:
- UI 编辑器:在 UI 选项卡上,以交互方式定义字段和度量值,而无需编写代码。
-
YAML 编辑器:单击
<>按钮直接编辑定义。 有关语法,请参阅 指标视图 YAML 语法参考。 还可以在 SQL 语句中使用 YAML 定义来创建指标视图。 有关 YAML 和 SQL 中的完整示例,请参阅 在 SQL 或 YAML 中定义指标视图。 -
Genie Code:点击右上角的
按钮打开 Genie Code,并用自然语言描述你的需求。 请参阅 使用 Genie 代码。
以下步骤使用每个工作区中可用的 UI 选项卡和 samples.tpch.orders 表来生成示例销售分析指标视图。 已完成的指标视图与 SQL 或 YAML 中的“定义指标”视图中的定义匹配。 若要了解有关此数据集的详细信息,请参阅 示例数据集。
步骤 1:创建指标视图并打开编辑器
- 单击
工作区边栏中的目录。
- 使用搜索栏查找
samples.tpch.orders,然后单击表名。 - 单击创建>指标视图。 在 “创建指标视图 ”对话框中,输入名称,选择目录和架构目标,然后单击“ 创建”。
编辑器将在 UI 选项卡上打开。编辑器会自动将所有源列添加到 “字段 ”选项卡,并添加示例 COUNT(*) 度量值。
步骤 2:添加联接
该示例联接 customer 表,以便客户属性可用作字段。 若要添加联接,请单击编辑器右上角的联接按钮:
- 要加入源,请选择
samples.tpch.customer并单击“ 添加”。 - 在
customer中输入。 - 使用下拉列表将联接条件设置为
source.o_custkey = customer.c_custkey。 若要添加多个联接列,请单击“ + 联接键”。 若要设置非相等条件,请单击“ 表达式 ”并优化条件。 - 在“联接基数”下,选择“多对一”。 有关选择基数的指导,请参阅 联接基数。
- 在“查询性能”下选择至多一个匹配项。 每个订单最多匹配一个客户,因此此优化是安全的,并在 YAML 定义中进行设置
at_most_one_match: true。 - 单击“ 加入”。
- 在“ 添加字段 ”对话框中,单击“ 添加所有列 ”以动态导入源表中的所有列。 如果要改为添加单个列, 请跳过 此步骤。 联接对象中的字段会与源对象中的字段一起显示在下拉列表中。
联接将源表与其他表或查询组合在一起。 有关联接建模概念(包括星型架构和雪花型架构以及 YAML 模式)的内容,请参阅使用联接。
步骤 3:定义筛选器
本页后面的完整 YAML 定义 包括一个筛选器,该筛选器将指标视图限制为 1990 年 1 月 1 日之后的订单。
使用 Builder 或 Custom 输入表达式
定义筛选器、字段或度量值时,可以使用 “表达式 ”部分中的两个选项之一设置表达式:
- 生成器:从上下文感知下拉列表中进行选择,编辑器会为你编写 SQL 表达式。
- 自定义:直接输入 SQL 表达式。
后续步骤中,对于简单的列筛选、转换和聚合,请使用 Builder;对于 Builder 无法构成的表达式(例如 CASE 语句和组合度量值),请使用 Custom。
定义筛选器:
- 单击指标视图编辑器右上角的
筛选器
- 设置筛选器表达式:
- 在 Builder 中,选择 “列
source.o_orderdate”、“ 运算符Greater than”和“ 值1990-01-01”。 - 在 Custom 中,编写 SQL 表达式
source.o_orderdate > '1990-01-01'。
- 在 Builder 中,选择 “列
筛选器适用于引用指标视图的所有查询。 有关筛选器建模概念和 YAML 模式,请参阅 “应用筛选器”。
步骤 4:添加字段
定义筛选器、字段或度量值时,可以使用 “表达式 ”部分中的两个选项之一设置表达式:
- 生成器:从上下文感知下拉列表中进行选择,编辑器会为你编写 SQL 表达式。 可用选项会根据列类型和值进行更改。
- 自定义:直接输入 SQL 表达式。
后续步骤根据每个表达式的复杂性在两个选项之间切换。 使用 Builder 进行简单的列转换和聚合;对于 Builder 无法组合的表达式(例如 语句和组合度量值),请切换到 CASE。
该示例定义了三个字段:源中的两个转换列和联接 customer 表中的一列。 字段(也称为维度)的行为类似于常规表列。 字段可以是用于分组和筛选的分类列,也可以是可在查询时聚合的未聚合数值列。 有关对字段建模的详细信息,请参阅 “字段”。
编辑器会自动将所有源列添加到 “字段 ”选项卡。 若要与示例一致,请删除不需要的列,这样就只剩下 source.o_orderdate、source.o_orderstatus 和 customer.c_mktsegment。
删除字段:
- 单击“ 字段 ”选项卡。
- 单击字段名称左侧的复选框以选择要删除的字段。
- 单击 “删除” 。
若要删除单个字段,请使用字段名称右侧的 。
编辑字段时,还可以添加元数据:
- 显示名称:描述性标签。
- 注释:字段的说明。
- 同义词:帮助 AI 工具发现字段的替代名称。 请参阅 同义词。
- 格式:用于控制值的显示方式的自定义数据格式。 格式仅可用于数值、日期和日期时间列。 请参阅 格式规范。
- 治理标签:用于分类和治理的 治理标签。
若要定义每个字段,请单击“ 字段 ”选项卡上的名称,生成其表达式,并添加可选注释。 若要运行转换并查看结果,请单击“ 预览”。
订单月份:单击 Builder。 然后,选择
source.o_orderdate并应用一个月的转换以生成DATE_TRUNC('MONTH', source.o_orderdate)。 添加注释Month of order。订单状态:单击 “自定义”。 然后,添加注释
Status of order并输入以下表达式:CASE WHEN source.o_orderstatus = 'O' THEN 'Open' WHEN source.o_orderstatus = 'P' THEN 'Processing' WHEN source.o_orderstatus = 'F' THEN 'Fulfilled' END市场细分:在 Builder 中,从已连接的
customer.c_mktsegment表中选择customer列。 添加注释Customer market segment。
步骤 5:添加度量值
该示例定义了三个度量值。 度量值是生成业务指标的聚合表达式,例如总收入或订单计数。 编辑器会自动添加度量 COUNT(*) 值;可以编辑或删除度量值。
编辑度量值时,还可以添加显示名称、注释、同义词、格式和受治理标记,这些都是字段可用的相同元数据。
若要添加每个度量值,请在“ 度量值 ”选项卡上单击 +,生成其表达式,并添加可选注释。 若要运行聚合并查看结果,请单击 预览”。 添加度量值时,Genie 建议将显示在度量值编辑器窗格顶部;单击建议以创建该度量值。
-
订单数:在生成器中,选择计数聚合以生成
COUNT(1)。 添加注释Total number of orders。 -
总收入:在Builder中,选择
source.o_totalprice和求和聚合,以生成SUM(source.o_totalprice)。 添加注释Sum of all order prices。 -
每个客户的总收入:在 “自定义”中,输入
SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)。 添加注释Average revenue per unique customer。
若要为时序计算(如移动平均值或运行总计)添加窗口度量值,请在编辑度量值时单击 “+ 窗口 ”。 请参阅窗口尺寸。
步骤 6:保存指标视图
单击“ 保存”。 已完成的指标视图与 SQL 或 YAML 中的“定义指标”视图中的定义匹配。
在 SQL 或 YAML 中定义指标视图
无需在 UI 中构建指标视图,您可以直接在 YAML 中定义它,或者在 SQL 中使用带有 CREATE VIEW 子句的 WITH METRICS 语句进行定义。 下面是示例指标视图的完整定义。 它是由 samples.tpch.orders 与 samples.tpch.customer 联接而成的筛选视图,其中包含订单月份、订单状态和客户市场细分字段,以及订单数、总收入和每位客户收入等度量值。
注释
这些示例使用 fields 关键字。 在低代码编辑器中生成指标视图时,生成的 YAML 将改用等效 dimensions 关键字。 请参阅 字段。
YAML 定义
若要直接在 YAML 中定义指标视图,请使用以下定义:
查看 YAML 定义
version: 1.1
comment: 'Orders KPIs for sales analysis'
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': source.o_custkey = customer.c_custkey
rely:
at_most_one_match: true
filter: source.o_orderdate > '1990-01-01'
fields:
- name: Order Month
expr: DATE_TRUNC('MONTH', source.o_orderdate)
comment: 'Month of order'
- name: Order Status
expr: |-
CASE
WHEN source.o_orderstatus = 'O' THEN 'Open'
WHEN source.o_orderstatus = 'P' THEN 'Processing'
WHEN source.o_orderstatus = 'F' THEN 'Fulfilled'
END
comment: 'Status of order'
- name: Market Segment
expr: customer.c_mktsegment
comment: 'Customer market segment'
measures:
- name: Order Count
expr: COUNT(1)
comment: 'Total number of orders'
- name: Total Revenue
expr: SUM(source.o_totalprice)
comment: 'Sum of all order prices'
- name: Total Revenue per Customer
expr: SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)
comment: 'Average revenue per unique customer'
有关完整的 YAML 语法详细信息,请参阅 指标视图 YAML 语法参考。
SQL 语句
若要在 SQL 中创建指标视图,请使用 CREATE VIEW 子句将 YAML 定义包装在 WITH METRICS 语句中,并将 YAML 放在 $$ 分隔符之间:
查看 SQL 语句
CREATE OR REPLACE VIEW orders_metric_view WITH METRICS LANGUAGE YAML AS
$$
version: 1.1
comment: "Orders KPIs for sales analysis"
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': source.o_custkey = customer.c_custkey
rely:
at_most_one_match: true
filter: source.o_orderdate > '1990-01-01'
fields:
- name: Order Month
expr: DATE_TRUNC('MONTH', source.o_orderdate)
comment: "Month of order"
- name: Order Status
expr: |-
CASE
WHEN source.o_orderstatus = 'O' THEN 'Open'
WHEN source.o_orderstatus = 'P' THEN 'Processing'
WHEN source.o_orderstatus = 'F' THEN 'Fulfilled'
END
comment: "Status of order"
- name: Market Segment
expr: customer.c_mktsegment
comment: "Customer market segment"
measures:
- name: Order Count
expr: COUNT(1)
comment: "Total number of orders"
- name: Total Revenue
expr: SUM(source.o_totalprice)
comment: "Sum of all order prices"
- name: Total Revenue per Customer
expr: SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)
comment: "Average revenue per unique customer"
$$
使用通配符批量导入字段和度量值
适用于: 使用 YAML 规范 1.1 的 Databricks Runtime 18.2 及更高版本
可以使用通配符 expr 从源表或联接表导入所有列,而不是列出每个字段。 当你希望指标视图显示上游资产中的每一列时,这会很有用。 在使用通配符时省略 name,因为 Azure Databricks 会根据源派生出各列的名称。 可以将通配符与显式定义的字段和度量值混合使用。
以下定义从源导入除一个字段以外的所有字段,从联接 customer 表添加字段,并定义显式度量值:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': source.o_custkey = customer.c_custkey
fields:
- expr: source.* EXCEPT (o_comment)
- name: Market Segment
expr: customer.c_mktsegment
measures:
- name: Order Count
expr: COUNT(1)
有关完整的通配符语法,包括从连接表中导入所有列(customer.*)、展开结构体以及解决名称冲突,请参阅 使用通配符批量导入字段和度量值。
使用 Genie Code
Genie Code 是一款 AI 助手,您可以通过编辑器右上角的 按钮打开它。 描述自然语言所需的内容,Genie Code 会为你更新指标视图定义。 Genie Code 具有上下文感知:在 UI 选项卡上,它会为你更新编辑器,并在 YAML 编辑器中插入 YAML。
若要将单个度量值添加到现有指标视图,请对其进行描述:
小窍门
请在代理模式中指示 Genie Code 为你执行此操作:
add an average sales per customer measure
若要从自然语言说明生成完整的指标视图,请将其描述为 Genie Code。 结果是一个定义,类似于此页上 的示例 ;确切的字段名称和注释可能会有所不同。
小窍门
请在代理模式中指示 Genie Code 为你执行此操作:
Create a metric view on samples.tpch.orders joined to samples.tpch.customer on o_custkey = c_custkey. Add a field for order month by truncating the order date to the month, a field for order status that maps 'O' to Open, 'P' to Processing, and 'F' to Fulfilled, and a field for the customer market segment. Add measures for the total number of orders, the total revenue as the sum of order price, and the total revenue per unique customer. Filter to orders placed after January 1, 1990.
其他资源
创建指标视图后,使用以下资源来查询、建模和管理工作。
- 查询指标视图:在 SQL 编辑器、笔记本、仪表板和警报中查询指标视图。
- 模型指标视图:模型源、字段、度量值、筛选器和联接。
- 管理指标视图:控制访问权限、启用协作编辑和管理指标视图生命周期。
- 指标视图 YAML 语法参考:引用完整的指标视图 YAML 规范。