跳到主要内容

指标模型设计

问题

如何设计一套规范的指标模型?原子指标和派生指标有什么区别?

答案

指标分层体系

分类定义示例
原子指标业务过程 + 度量(不可再拆分)支付金额、订单数
派生指标原子指标 + 统计周期 + 修饰词近 7 天新用户支付金额
复合指标多个指标的四则运算客单价 = 支付金额 / 订单数

原子指标定义规范

字段说明示例
指标英文名唯一标识pay_amount
指标中文名业务名称支付金额
业务过程来自哪个事实支付完成
度量方式聚合函数SUM
数据类型值类型DECIMAL(18,2)

派生指标 = 原子 + 修饰 + 时间

派生指标 = 原子指标 + 统计周期 + 统计粒度 + 修饰词

近7天_新用户_支付金额
= SUM(pay_amount)
+ 时间:近 7 天
+ 粒度:按用户
+ 修饰词:is_new_user = 1
-- 派生指标的 SQL 表达
SELECT
user_id,
SUM(pay_amount) AS pay_amount_7d_new
FROM dwd.order_pay
WHERE dt >= DATE_SUB(CURRENT_DATE, 7)
AND is_new_user = 1
GROUP BY user_id;
为什么要拆分原子和派生?
  • 一致性:同一个原子指标(如支付金额),不同团队不会定义不同的计算方式
  • 可复用:一个原子指标可以衍生出多个派生指标
  • 可管理:在指标平台上统一注册和管理

常见面试问题

Q1: UV 是原子指标还是派生指标?

答案

  • UV(独立访客数)本身是原子指标COUNT(DISTINCT user_id)
  • 近 7 天首页 UV派生指标:原子(UV) + 时间(近7天) + 修饰(页面=首页)

Q2: 指标口径不一致怎么办?

答案

  • 建立指标字典,统一定义每个指标的计算逻辑
  • 在指标平台上注册,所有人引用同一套定义
  • 用 dbt 等工具将指标物化为统一的模型

相关链接