Appearance
维度与度量
语义层字段属性定义
维度与度量概述
维度和度量是语义模型的核心构建元素,它们定义了可用于分析的字段,描述数据特征并支持各类计算。
- 维度:描述性属性(如产品类别、日期或用户ID),用于数据分组、筛选和切片
- 度量:可量化的数值(如销售额、数量或成本),用于聚合计算和指标构建
定义维度和度量的基本结构如下:
yaml
dimensions:
- name: dimension_name # 必需 - 唯一标识符,通常基于列名
description: "业务定义" # 必需 - 清晰明确的业务解释
type: data_type # 必需 - 基础数据类型(如string, date)
measures:
- name: measure_name # 必需 - 唯一标识符,通常基于列名
description: "业务定义" # 必需 - 清晰明确的业务解释
type: data_type # 必需 - 基础数据类型(如number, integer)维度
维度是数据的描述性属性或特征,通常为非数字或分类字段,用于切片、分组和筛选数据。可以将维度视为分析中回答"谁、什么、哪里、何时、为什么"等问题的要素。常见示例包括日期、用户ID、产品类别、地理位置或状态标识。
| 字段 | 是否必需 | 描述 |
|---|---|---|
| name | 是 | 模型中维度的唯一名称,通常与数据库列名对应 |
| description | 是 | 维度的详细业务描述,必须提供 |
| type | 是 | 底层数据库或数据仓库中的原始数据类型(如VARCHAR、INT、TIMESTAMP) |
| searchable | 否 | 指定是否为此维度创建搜索索引,默认为false |
| options | 否 | 预定义的可选值列表,适用于分类型数据 |
度量
度量是可聚合的定量字段,用于计算业务指标,如金额总和或数量统计。
| 字段 | 是否必需 | 描述 |
|---|---|---|
| name | 是 | 模型中度量的唯一名称,通常与数据库列名对应 |
| description | 是 | 度量的详细业务描述,必须提供 |
| type | 是 | 数据库/仓库中定义的底层列类型,支持的聚合类型取决于查询引擎能力 |
最佳实践
- 描述性命名:使用清晰、符合业务语境的名称,直观传达字段含义
- 详细描述:提供完整描述,帮助用户理解字段的业务上下文和用途
- 明确数据类型:准确设置类型,确保系统正确处理和显示数据值
- 标注单位:在描述中注明度量单位(如"美元"、"天数"),避免误解
实例讲解
以下是一个标准化的订单语义模型示例,展示了维度和度量的实际应用:
yaml
name: orders
description: >
表示客户订单交易数据。包含每个订单的详细信息,
包括唯一标识、客户关联、时间信息、状态和财务数值。
这是基于事件的模型,对销售分析、收入跟踪和购买
模式洞察至关重要。
dimensions:
- name: order_id
description: >
订单交易的唯一标识符,作为此模型的主键。
用于查询特定订单或计算不重复订单数。
type: string
- name: customer_id
description: >
关联到'customers'模型中'id'字段的外键,将订单
链接到下单客户。是客户分析的关键连接点。
type: string
- name: order_date
description: >
订单创建日期。用于时间序列分析、按时间范围筛选
(如日/周/月收入)及基于时间的队列分析。
type: date
searchable: true # 常用于日期筛选/搜索
- name: status
description: >
订单的当前履行或支付状态(如'待处理'、'已发货'、
'已送达'、'已取消')。用于运营报告和状态筛选。
type: string
options: ["pending", "shipped", "delivered", "cancelled"] # 预定义值示例
measures:
- name: amount
description: >
订单的总金额,通常以特定货币单位(如美元)计算。
是收入相关计算(求和、平均值)的核心指标。
type: number
- name: item_count
description: 订单中包含的商品总数,用于分析订单规模。
type: integer示例解析
维度:
- order_id:典型维度,可能为数字或字符串,但主要用于标识而非计算
- customer_id:典型维度,用于关联客户信息,而非直接参与计算
- order_date:时间类维度,提供事件发生的时间背景,是时序分析的基础
- status:分类文本维度,描述订单状态,options列表确保数据规范性
度量:
- amount:核心财务度量,表示订单金额,常用于汇总计算
- item_count:数量类度量,表示订单规模,用于各类聚合分析
这种结构清晰区分了用于上下文和筛选的描述性属性(维度)与用于计算和聚合的可量化值(度量),使模型既符合业务含义又便于分析使用。
后续步骤
完成维度和度量定义后,您可以:
- 基于这些基础元素创建更复杂的业务计算指标
- 建立模型间的关联关系,构建完整数据模型网络