首页/数据/数仓建模速查/比率字段命名与分母声明
分层与规范64 条

比率字段命名与分母声明

比率字段用 _rate 或 _ratio 后缀,字段注释写清分子与分母口径;比率不参与跨维度求和,需要重算或加权平均。

数仓建模速查数据更新于 2026-10-13

比率字段命名与分母声明

比率类字段统一用 _rate 或 _ratio 后缀,并在字段注释里写清分子与分母的口径,例如退款率的分母是支付订单还是支付金额。比率不能跨维度直接求和,需要按分子分母重算或按权重加权。与之配套的是金额用 _amt、计数用 _cnt、数量用 _qty,形成一套可查的后缀词典。

基本信息

后缀_rate 或 _ratio
注释写清分子与分母口径
聚合不可直接 sum,按分子分母重算
精度DECIMAL(10,4) 起
量纲统一小数或统一百分比

典型使用场景

  • 建表时同时落比率字段与分子分母字段,便于下游重算与核对
  • 跨区域、跨门店汇总时用分子分母重算,而不是平均日比率
  • 口径变更(分母是否含取消单、退款是否含部分退)登记到指标卡,避免同名不同义
  • 分母可能为 0 的场景用 NULLIF 兜底,返回 NULL 而不是除零报错
  • 报表展示需要百分比时在展示层换算,存储层只保留一种量纲

比率重算

比率重算
SELECT region_id,
       sum(pay_amt)    AS pay_amt,
       sum(refund_amt) AS refund_amt,
       sum(refund_amt) / nullif(sum(pay_amt), 0) AS refund_rate  -- 重算,不做比率平均
FROM dws_trade_region_day
WHERE dt = '2026-10-12'
GROUP BY region_id;
-- 反例:avg(refund_rate) 得到的结果与按分子分母重算不一致

度量字段后缀约定

后缀含义聚合方式
_amt金额sum
_cnt / _qty计数 / 数量sum
_rate / _ratio比率分子分母重算
_price单价按量加权平均
把日比率平均成月比率会把周末低基数日的影响放大;正确做法是取月度的分子与分母重算,这也是比率字段要同时保留分子分母的原因。
同一个比率有的系统按 0 到 1 的小数存、有的按百分数存,混用会差 100 倍,字段注释里必须写明量纲。
比率字段名要与分母层级一致:门店日退款率叫 refund_rate,区域或大盘的同一指标必须重算而不能取自门店行;如果命名不加区分,下游很容易直接引用错层级的比率字段。
把比率字段当成可加指标参与多维下钻,是报表口径错误的高发点;下钻时先把比率字段从可选字段里去掉,逼着使用者用分子分母重算。

易错点

  • 跨维度直接平均比率:结果与分子分母重算不一致,报表数字无法解释
  • 分母未用 NULLIF 兜底:分母为 0 时整除报错或返回无意义的极大值
  • 比率量纲不统一(小数与百分数混存):下游乘除用法不一致,数值差 100 倍
  • 只存比率不存分子分母:口径变化后无法重算历史,只能整段回刷

数据来源与参考

  • 阿里《大数据之路:阿里巴巴大数据实践》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌