Skip to content

维度与度量

语义层字段属性定义

维度与度量概述

维度和度量是语义模型的核心构建元素,它们定义了可用于分析的字段,描述数据特征并支持各类计算。

  • 维度:描述性属性(如产品类别、日期或用户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:数量类度量,表示订单规模,用于各类聚合分析

这种结构清晰区分了用于上下文和筛选的描述性属性(维度)与用于计算和聚合的可量化值(度量),使模型既符合业务含义又便于分析使用。

后续步骤

完成维度和度量定义后,您可以:

  1. 基于这些基础元素创建更复杂的业务计算指标
  2. 建立模型间的关联关系,构建完整数据模型网络