首页/数据/数据工程与 ETL 速查/原子指标与聚合方式

原子指标与聚合方式

原子指标是不能再拆分的业务度量:业务过程、度量字段、聚合方式三者固定;金额类用 SUM、次数类用 COUNT、去重主体用 COUNT DISTINCT,聚合方式确定后不应随报表变化。

原子指标是什么

原子指标是不能再拆分的业务度量,由三部分固定下来:业务过程(下单、支付、退款)、度量字段(金额、次数、人数)、聚合方式(SUM、COUNT、COUNT DISTINCT)。这三者确定后,指标在不同报表里就不应再改变算法——换个维度查看只是换个分组,不改变聚合方式。原子指标通常固化在明细层或汇总层,是按维度汇总与二次计算的基础。

基本信息

组成业务过程 + 度量字段 + 聚合函数
常见形式sum(支付金额)、count(订单)、count(distinct 用户)
可加性SUM 可跨维度相加,COUNT DISTINCT 不可
落库位置DWD 明细或 DWS 汇总层固化口径
配套派生指标在此之上加统计周期与业务限定

典型使用场景

  • 指标字典建设:为每个业务过程定义唯一的度量与聚合方式
  • 跨报表核对:确保不同看板上的支付金额来自同一聚合逻辑
  • 汇总层建表:按不同维度预先算好同一原子指标
  • 口径评审:讨论时先确认分母分子分别属于哪个原子指标
  • 指标平台配置:把原子指标、限定词与维度组合成可用指标

指标定义示例

指标定义示例
-- 原子指标:支付金额(可加)
SELECT SUM(pay_amount) AS pay_amt
FROM dwd_trade_order_detail_di WHERE dt = '2026-10-11';

-- 原子指标:支付用户数(去重,不可加)
SELECT COUNT(DISTINCT user_id) AS pay_user_cnt
FROM dwd_trade_order_detail_di WHERE dt = '2026-10-11';

-- 同一原子指标按渠道分组,聚合方式不变
SELECT channel, SUM(pay_amount) AS pay_amt
FROM dwd_trade_order_detail_di WHERE dt = '2026-10-11' GROUP BY channel;

度量和聚合对照

度量类型建议聚合是否可加示例
金额类SUM可加支付金额、退款金额
次数类COUNT可加订单笔数、访问次数
主体类COUNT DISTINCT不可加支付用户数、活跃门店数
比率类由两个原子指标相除不可加支付转化率、客单价
去重人数类指标在各维度汇总后不能相加:各渠道人数之和一般大于总人数,报表必须注明口径,否则总和与明细永远对不上。
原子指标定义要写清过滤条件(是否排除测试单、是否含冲正、是否含税),同一度量在不同过滤条件下的结果差别很大,这些条件属于原子指标定义的一部分。
落库位置决定复用程度:只写在报表 SQL 里的原子指标无法被其他团队复用,早晚会被重新实现一遍,口径分叉由此开始。

易错点

  • 把去重人数按维度相加当成总数,结果偏大且无法与明细核对
  • 同一度量在不同报表里用了不同的聚合方式(一处 SUM 一处 AVG),数字对不上
  • 原子指标定义里没写过滤条件,含税与不含税、含测试单与不含测试单混用
  • 指标只存在于某张报表 SQL 里,没有沉淀到公共层,被重复实现出多个版本

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》原子指标
  • 行业指标定义规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌