概述
本文介绍如何在已发布的语义模型上定义指标(Metric)与维度(Dimension)。指标承载业务可消费的「数字口径」(如 GMV、客单价、DAU),维度承载分析切片视角(如地域、品类、日期)。指标与维度是后续 Buddy 取数、报表展示对外暴露的最小单元。
完成创建后请参阅 语义模型应用 完成授权与消费。
前提条件
在开始本操作前,请确保满足以下条件:
拥有「语义建模 → 指标管理」的 Read Write 或 Read Write & Delete 功能权限。
拥有目标模型的 Manage 或 CreateMetric 权限(Owner 自动包含),否则无法在该模型上创建指标。
目标模型已处于已发布 状态。
如需创建新维度,还需拥有「语义建模 → 维度管理」的 Read Write 功能权限。
使用限制
限制项 | 说明 |
创建权限 | 指标创建需要模型的 CreateMetric 或 Manage 权限;指标创建不需要底层表 Select 权限 |
编辑形态 | 指标与维度均通过 YAML 编辑器编辑 |
维度 ACL | 维度本期暂不支持精细化 ACL 权限,所有有「语义建模 → 维度管理」的 Read Write 或 Read Write & Delete 功能权限的用户均可编辑、删除 |
指标的两种类型
指标是业务上可被消费的「数字口径」,在模型之上定义。指标分为原子指标 与衍生指标 两大类:
原子指标(SIMPLE) :指标体系的最小统计单元,对单一字段做聚合计算,如
SUM(OrderAmount) 表示「交易总金额」。原子指标不涉及衍生逻辑。衍生指标 :在原子指标基础上按业务规则加工得到的指标,又细分为 5 种:
筛选型 :在原子指标基础上按特定维度(如时间、地域、用户属性)筛选后得到,例如「线上渠道交易总金额」=
SUM(OrderAmount) 限定 渠道 = 线上。累积计算型 :对原子、筛选型指标按时间窗口累加、汇总得到,例如「近 30 天线上渠道交易总金额」。
同环比计算型 :以累积计算型指标为基础,与历史同期(同比)或上一周期(环比)数据对比的相对指标,例如「近 30 天线上渠道交易总金额环比增长率」。
混合计算型 :结合两个及以上指标通过衍生计算规则(如加减乘除等)得到的复合指标,例如「平均交易流水金额」=
交易总金额 / 交易数量。转化计算型 :基于不同环节的原子、筛选型指标,计算流程中「从 A 到 B」的转化效率,例如「注册-下单转化率」=
下单量 / 注册量。指标支持的聚合方式包括
SUM、COUNT、COUNT(DISTINCT)、MAX、MIN、AVG,以及自定义表达式。操作步骤
步骤 1:进入指标管理
进入工作空间,选择左侧菜单中的本体建模菜单->指标管理子菜单,该页面以列表形式展示当前空间内您可见的所有指标,列表字段包括:指标名称、指标别名、指标状态、指标类型、衍生类型、口径、关联模型、来源表、负责人、最近修订时间。
步骤 2:发起新建指标
单击右上角 + 新建指标(YAML) ,从右侧弹出 YAML 编辑面板。面板顶部会先要求选择「数据开源」
提示
推荐用 Hi Buddy 协助生成指标 YAML:在左侧菜单选择 Hi Buddy 入口,用自然语言描述指标口径(例如「基于 catalogname.olist_sales_database 数据库内的表,构建销售分析相关语义模型,比如:GMV、近30天退货订单数、客单价等。」),AI 会自动分析制定范围的数仓元数据,并生成符合规范的 语义模型(含指标、维度、关系模型)YAML 文件。
步骤 3:编写指标 YAML
提示
派生指标 YAML 中
formula 字段引用的指标必须是同一模型下已发布或同 YAML 中同时定义的指标,否则发布时校验失败。3.1 完整 YAML 示例(模型 + 6 类指标 + 3 类维度)
下面给出一份端到端完整示例 ,一次性声明模型(DEF)、所有 6 类指标(
SIMPLE / FILTER / DERIVED / RATIO / CUMULATIVE / CONVERSION)以及 3 类维度(TIME / CATEGORICAL / DICT)。可作为编写实际 YAML 时的参考模板。# ============================================================# WeData 语义模型 YAML 配置完整示例# 版本:1.0# 说明:通过此 YAML 可一次性创建语义模型、指标、维度# ============================================================# 【必填】配置文件版本号,固定为 1.0version: 1.0# ============================================================# 语义模型定义(可选)# type: DEF - 新建模型(需提供完整定义)# REF - 引用已有模型(只需 name + type)# ============================================================model:# 【必填】模型英文名,1-50字符,支持字母、数字、下划线、括号name: ecommerce_order_model# 【可选】模型别名列表,支持多个,不允许含逗号# 为空时默认使用 name;存入数据库时以逗号分隔存储label:- 电商订单模型- order_model_alias# 【可选】模型描述description: "电商业务订单主模型,关联用户表和商品表"# 【必填】模型类型:DEF(定义新模型) | REF(引用已有模型)type: DEF# 【DEF必填】主表数据源路径,格式:catalogName.databaseName.tableNamesource: default_catalog.ecommerce_db.orders# 【可选】关联表配置,支持嵌套 JOINjoins:- name: user_table # 关联表别名(必填)source: default_catalog.ecommerce_db.users # 关联表路径(必填)on: # 关联条件(必填,至少一个)- source.user_id = user_table.id# 嵌套关联(可选)joins:- name: user_addresssource: default_catalog.ecommerce_db.addresseson:- user_table.id = user_address.user_id- name: product_tablesource: default_catalog.ecommerce_db.productson:- source.product_id = product_table.id# ============================================================# 指标定义列表(可选)# 支持类型:SIMPLE | FILTER | DERIVED | RATIO | CUMULATIVE | CONVERSION# ============================================================metrics:# ----------------------------------------------------------# 1. 原子指标(SIMPLE)- 基础聚合指标# ----------------------------------------------------------- name: total_order_amount# 【可选】指标别名列表,支持中英文、数字、下划线、括号,不允许含逗号label:- 订单总金额- GMVdescription: "统计所有有效订单的总金额"# 【必填】指标类型type: SIMPLE# 【必填】类型参数type_params:# 【可选】关联模型引用,填写 model 的 name# 不填时默认使用当前 YAML 中定义的 modelmodel_ref: ecommerce_order_model# 【必填】源表路径,格式:catalogName.databaseName.tableNamesource_table: default_catalog.ecommerce_db.orders# 【必填】聚合表达式expr: "SUM(order_amount)"# 【必填】时间维度名称(需在 dimensions 中定义对应的 TIME 类型维度)time_dimension: order_date# 【可选】非可加维度配置(用于半累加指标,如库存快照)# non_additive_dimension:# dimension: snapshot_date # 维度名称(必填)# window_choice: MAX # 窗口取值:MIN | MAX(必填)# window_groupings: # 窗口分组(可选)# - warehouse_id# ----------------------------------------------------------# 2. 筛选型指标(FILTER)- 在原子指标基础上加过滤条件# ----------------------------------------------------------- name: paid_order_amountlabel:- 已支付订单金额description: "仅统计已支付状态的订单总金额"type: FILTERtype_params:# 【必填】筛选条件表达式filter: "status = 'PAID'"# 【必填】依赖的基础指标列表(至少一个)metrics:- name: total_order_amount# ----------------------------------------------------------# 3. 混合计算型指标(DERIVED)- 多指标表达式运算# ----------------------------------------------------------- name: avg_order_amountlabel:- 平均客单价description: "订单总金额 / 订单总数"type: DERIVEDtype_params:# 【必填】计算表达式,使用指标名称作为变量expr: "total_order_amount / order_count"# 【必填】参与计算的基础指标列表(至少一个)metrics:- name: total_order_amount- name: order_count# ----------------------------------------------------------# 4. 同环比指标(RATIO)- 时间周期对比# ----------------------------------------------------------- name: order_amount_yoylabel:- 订单金额同比description: "订单总金额的同比增长率"type: RATIOtype_params:# 【必填】计算类型:YEAR_ON_YEAR(同比) | RELATIVE_RATIO(环比)derived_type: YEAR_ON_YEAR# 【必填】基础指标列表(至少一个)metrics:- name: total_order_amount# ----------------------------------------------------------# 5. 累积计算型指标(CUMULATIVE)- 时间窗口累积# ----------------------------------------------------------- name: weekly_order_amountlabel:- 近7日订单金额description: "最近7天的订单金额累积值"type: CUMULATIVEtype_params:# 【必填】时间窗口,可选值:# MINUTE_5 | MINUTE_30 | HOUR_1 | DAY_1 | DAY_7 | DAY_30 | DAY_90 | DAY_180# WTD(本周至今) | MTD(本月至今) | QTD(本季度至今) | YTD(本年至今) | HTD(历史至今)window: DAY_7# 【可选】额外筛选条件filter: "status IN ('PAID', 'SHIPPED')"# 【必填】基础指标列表(至少一个)metrics:- name: total_order_amount# ----------------------------------------------------------# 6. 转化类指标(CONVERSION)- 漏斗转化分析# ----------------------------------------------------------- name: view_to_purchase_ratelabel:- 浏览到购买转化率description: "用户从浏览商品到下单购买的转化率"type: CONVERSIONtype_params:# 【必填】基准指标(漏斗起点)base_metric:name: page_view_count# 【必填】转化指标(漏斗终点)conversion_metric:name: purchase_count# 【必填】转化实体类型:FROM_ENTITY | FROM_DIMENSIONconversion_entity_type: FROM_DIMENSION# 【可选】转化维度(conversion_entity_type 为 FROM_DIMENSION 时使用)conversion_dimension: user_id# 【必填】计算方式:CONVERSIONS(转化值) | CONVERSIONRATE(转化率)calculation: CONVERSIONRATE# 【可选】窗口类型:WINDOW(N时间内转化) | OFFSET(第N时间转化)window_type: WINDOW# 【可选】时间窗口,格式:{数字} {hour|day|week|month}window: "7 day"# ----------------------------------------------------------# 7. 转化类指标(CONVERSION)- FROM_ENTITY 示例# 通过实体(主键/关联键)关联基准指标和转化指标# ----------------------------------------------------------- name: register_to_order_conversionslabel:- 注册到下单转化数description: "用户从注册到首次下单的转化数量,通过用户实体关联"type: CONVERSIONtype_params:# 【必填】基准指标(漏斗起点)base_metric:name: user_register_count# 【必填】转化指标(漏斗终点)conversion_metric:name: total_order_amount# 【必填】转化实体类型:FROM_ENTITY 表示通过实体(主键)关联两个指标# FROM_ENTITY: 两个指标通过同一实体(如用户ID)自动关联,无需指定 conversion_dimension# FROM_DIMENSION: 需要手动指定 conversion_dimension 字段来关联conversion_entity_type: FROM_ENTITY# 【必填】计算方式:CONVERSIONS(转化数) | CONVERSIONRATE(转化率)calculation: CONVERSIONS# 【可选】窗口类型:WINDOW(N时间内转化) | OFFSET(第N时间转化)window_type: OFFSET# 【可选】时间窗口,格式:{数字} {hour|day|week|month}window: "30 day"# ============================================================# 维度定义列表(可选)# 支持类型:TIME | CATEGORICAL | DICT# ============================================================dimensions:# ----------------------------------------------------------# 1. 时间维度(TIME)- 必须指定时间精度# ----------------------------------------------------------- name: order_date# 【可选】维度别名列表,支持多个,不允许含逗号label:- 下单日期- 订单时间description: "订单创建时间,精确到天"# 【必填】数据源路径,格式:catalogName.databaseName.tableNamesource: default_catalog.ecommerce_db.orders# 【必填】对应的数据库列名col_name: created_time# 【必填】维度类型type: TIME# 【TIME类型必填】类型参数type_param:# 时间精度,可选值:YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECONDtime_precision: DAY# ----------------------------------------------------------# 2. 普通维度(CATEGORICAL)# ----------------------------------------------------------- name: order_channellabel:- 订单渠道description: "订单来源渠道:APP/PC/H5"source: default_catalog.ecommerce_db.orderscol_name: channeltype: CATEGORICAL# CATEGORICAL 类型不需要 type_param,不填# ----------------------------------------------------------# 3. 字典维度(DICT)- 关联字典表# ----------------------------------------------------------- name: order_statuslabel:- 订单状态description: "订单状态码,关联字典表"source: default_catalog.ecommerce_db.orderscol_name: status_codetype: DICT# 【DICT类型必填】类型参数type_param:dict_items:- key: Shippedvalue: 已发货- key: Completedvalue: 已完成- key: Canceledvalue: 已取消
示例说明 :
version: 1.0 是配置文件版本号,固定为 1.0。model.type = DEF 时需要提供完整模型定义(source + joins);改为 REF 时仅需 name + type,表示引用已有模型。6 类指标的
type_params 形态各不相同:SIMPLE 通过 expr(聚合表达式)+ time_dimension 定义;FILTER 在 metrics 引用的原子指标上叠加 filter 条件;DERIVED 用 expr 引用其他指标名称做四则运算;RATIO 用 derived_type(YEAR_ON_YEAR / RELATIVE_RATIO)声明同环比;CUMULATIVE 用 window(如 DAY_7 / MTD)声明时间窗口累积;CONVERSION 通过 base_metric / conversion_metric / conversion_entity_type / calculation / window 声明漏斗转化。3 类维度的
type_param 形态:TIME 必填 time_precision(如 DAY / HOUR / MONTH);CATEGORICAL 无 type_param;DICT 通过 dict_items 声明 key-value 映射。步骤 4:发布指标
单击编辑器右上角 发布 :
1. 系统先做校验:YAML 语法、模型权限(CreateMetric / Manage)、表达式是否在底层引擎可执行、所依赖的指标是否存在等。
2. 校验通过后,指标状态变为「已发布」,在指标管理列表可立即被消费。
3. 已发布指标会出现在指标管理列表,可在模型详情页的「关联指标」Tab 看到,并允许其他用户根据 Query 权限消费。
步骤 5:定义全局维度(可选)
维度为工作空间级全局维度,不管是 YAML 创建还是在「维度管理」tab 中创建,均为全局维度。
1. 在语义建模顶部切换到 维度管理 Tab,单击 + 新建维度 。
2. 在 YAML 中声明维度的英文名、中文标签、字段类型、来源字段等。
3. 维度无须发布,保存即生效。
4. 在模型 YAML 中通过
name 引用全局维度,避免重复声明。维度类型
维度用于定义分析视角。按字段的业务语义,常见维度可分为以下几类:
时间维度 :用于按时间窗口对指标进行切片的日期、时间类字段,支持按天、周、月、季、年等不同粒度聚合,是趋势分析(如同环比、近 N 天)的核心切片依据。
示例:
order_date(订单创建日期)、pay_time(支付完成时间),常按天、周、月切片。字典维度 :值域固定、可枚举的维度字段,对应业务上的「类目」「品牌」等分类体系。其取值通常来自字典表或预设枚举,字段值域有限且稳定,便于做归一化与标准化管理。
示例:
category_name(商品类目)、brand(品牌)、gender(性别)。普通维度 :用于描述业务实体属性的通用维度字段,没有特殊的时间或字典语义,常见为用户姓名、年龄、用户 ID 等属性
示例:
user_name(用户名)、age(年龄)、user_id(用户 ID)。步骤 6:转交指标 负责人(可选)
每个指标只能有一个 负责人,默认为创建者。在指标详情页 → 口径名下→ 右侧的“业务信息”→ 负责人字段 hover 上去会出现修改的 ICON,点击后选择目标负责人提交即可。转交后原 负责人 失去指标管理权限。
指标详情页面
指标发布后,可在「指标管理」列表单击指标名称进入详情页,对指标进行查看、分析、血缘追溯与授权。详情页顶部展示指标基本信息与操作按钮,下方分为 4 个 Tab:口径明细 / 指标分析 / 血缘 / 权限 。
顶部公共区域 :
左侧:返回箭头、指标名、状态徽标(已发布、已下线)
面包屑:语义建模、指标管理、指标名
收藏按钮:可加入收藏,便于快速回访
右上角操作按钮:
编辑 :进入 YAML 编辑器,调整口径后重新发布
下线 :将指标状态置为「已下线」,停止对外消费
授权 :打开授权弹窗,授予其他用户 Manage / Query 权限(注意:需在指标详情页面->权限 Tab 中才展示该按钮。)
口径明细
口径明细 Tab 用于查看指标定义的全部信息,是「指标是什么」的解释页面。
口径描述 :一段文字说明指标业务含义,例如「The average number of behaviors per session, calculated as total behavior count divided by total sessions.」
计算口径 :
指标类型:原子、筛选、混合计算、累积、同环比、转化
模型:所属语义模型,可单击跳转至模型详情页面
依赖指标:派生型指标会以卡片形式展示,每个依赖指标一张卡片,含名称、状态(已发布、已下线)、英文名
计算逻辑:公式(如
A / B)或文字描述,每种指标类型会根据其类型展示不同的计算逻辑信息。右上角「预览 SQL」:展示指标编译后的查询 SQL,便于排查
分析维度 :列出该指标支持的分析维度,字段包括:维度名、维度别名、描述、维度精度(如最小颗粒度)、维度信息、负责人、关联字段、最近修订时间
业务信息 (右侧栏):别名、负责人
技术信息 (右侧栏):指标类型、指标状态、最近更新时间、最近更新人、创建时间、创建人
指标分析
指标分析 Tab 用于对当前指标做即时查询,校验口径与快速取数。顶部提供两种查询模式:
表单模式 (适合无 SQL 背景用户):
时间区间:默认近 30 天,可自定义起止日期
时间粒度:日、周、月、季、年、时、分(和每个指标所支持的最小时间粒度有关系)
最大返回记录:可调,默认 30
维度:+ 添加维度和维度值,按所选维度分组,可多选
底部「查询、重置」按钮触发取数
SemQL 模式 (适合熟悉查询语法的用户):
直接编写 SemQL 语句,例如:
select * from query(metric=[avg_session_behavior_count], limit=30)
同样支持底部「查询、重置」
两种模式均提供右上角「预览查询 SQL」入口,用于查看底层物理 SQL。
血缘
血缘 Tab 展示指标的上下游数据链路,是「指标从何而来、流向何处」的追溯页面。提供两种视图:
列表模式 (默认):以列表形式罗列上游、下游节点
图模式 :以图形化方式展示链路,节点之间用箭头表示数据流向。典型链路示意:
上游:表和视图(2) 语义模型(1) 上游:指标(2) 当前指标┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐│ 订单事实表 │─>│ Customer … │─>│ metric.会话数 │─>│ avg_se… ││ ODS 数据表 │ │ Behavior … │ │ metric.行为数 │ │ count │└──────────────┘ └──────────────┘ └──────────────┘ └──────────┘
每个节点支持单击「详情」跳转到对应资源详情页
顶部操作:定位到具体节点、放大、缩小、1:1 适配、全屏
右侧图例:列出所有可识别的节点类型 —— 数据表、视图表、机器学习模型、指标、语义模型、数据库、NOTEBOOK、SQL、机器学习服务、工作流、离线集成、实时集成
权限
权限 Tab 用于管理指标的授权关系,对应模型层的指标级 ACL。
列表区 :
右上角「授权」按钮:打开授权弹窗
搜索框:按用户筛选
权限类型筛选:全部权限 / Manage / Query
列表列:授权对象、类型(用户、所有者)、权限点(Manage / Query)、维度、维度值范围(行级权限)、授予人、授权时间、操作
「所有者」由创建者自动获得,且不可被撤销;列表中以「所有者」徽标标记
授权弹窗 :
字段 | 是否必填 | 说明 |
授权主体 | 是 | 可选择用户、用户组、标签 |
授权对象 | 是 | 如果授权主体选用户:此处展示选用户面板,支持搜索用户;至少添加 1 个 如果授权主体选用户组:此处展示选用户组面板,支持搜索用户组;至少添加 1 个 如果授权主体选标签:无需选择授权对象,仅需选下面的授权点即可 |
授权点 | 是 | 至少勾选 1 项;未勾选时提交按钮置灰并提示「请选择权限点」。可支持设置授权对象可查询的指标行列权限。 |
授权原因 | 否 | 多行文本,用于审计与业务背景说明 |
权限点说明 :
Manage 管理 :可编辑、发布、下线 指标,以及授权他人。
Query 查询 :可查询指标数据,可配置维度值范围。
通过 Buddy 创建指标和维度
Buddy 内置「自然语言创建指标和维度 Skill」,能识别常见聚合术语、字段类型并生成 YAML。
创建指标示例 Prompt
给的信息越详细,Buddy 输出结果越准确。Prompt 建议包含:指标业务含义、所属数据源、模型、聚合表达式、时间字段、过滤条件、依赖指标等关键要素。
用户输入 |
「在我的 olist_sales_model 语义模型下,新增一个 gmv 指标。统计逻辑是对 dlc.default_catalog.olist.orders 表中的 pay_amount 字段求和,用以对所有订单的支付金额求和(总交易额),注意统计时,剔除掉内部客户(客户类型为“internal”)下单的数据」 |
创建维度示例 Prompt
创建维度 Prompt 建议包含:维度英文名与中文标签、来源表与字段、数据类型、字典 key-value(如有)、所属模型、业务描述、Owner 等。
用户输入 |
创建「支付时间」维度,表名 dlc.default_catalog.olist.orders,字段名 pay_time,最小时间粒度按日 DAY,表示订单实际支付完成的时间点," |
注意事项
为了让 Buddy 输出符合预期的 YAML,建议在 Prompt 中尽量说明关键要素:
1. 模型定义关键要素
如果要指定数据源表名使用三段式 :
catalog.database.table,例如 dlc.default_catalog.olist.orders。字段名要与底层表的实际列名完全一致 ,避免拼写错误。不指定表名和字段名 AI 也会根据用户输入推断,但是指定后生成的结果会更准确。
2. 指标定义要素
指标含义: 定义这个指标是做什么的,如线上渠道交易额等。
统计口径描述 :说明指标的业务含义、计算逻辑(可以是自然语言,也可以是统计 SQL)、使用场景,越详细生成的 YAML 越准确。
3. 维度定义要素
维度含义 说明这个维度是什么,如支付时间、支付渠道等。
来源表与字段 同样使用三段式表名、真实字段名,如果不指定,AI 也会根据输入推断,但是指定后生成的结果会更准确。
4. 权限与发布
Buddy 在生成 YAML 前会校验当前用户是否拥有目标模型的
CreateMetric 权限;无权限会拒绝创建。生成 YAML 后会等待用户审核确认 才会真正写入,审核时可再次调整字段后再确认。
提交后指标进入「已发布」状态即可在指标管理列表被消费,无需再执行额外动作。
常见问题
Q1:创建指标提示「缺少 CreateMetric 权限」?
说明您没有目标模型的 CreateMetric 或 Manage 权限。请联系模型 Owner 在模型详情页「授权」Tab 中授予您 CreateMetric 权限。
Q2:派生指标的
formula 中能引用其他模型的指标吗?
不能。派生指标只能引用同一模型下的指标。Q3:指标发布失败,提示「表达式校验失败」?
通常原因包括:① 表达式中字段在底层表不存在;②
COUNT(DISTINCT) 被某些引擎不直接支持,需确认平台支持的去重写法;③ 自定义 SQL 中的函数名不被引擎识别。建议先用底层表在 SQL 编辑器中验证表达式可执行后再发布。相关文档
创建语义模型
语义模型应用