比率字段命名与分母声明
比率类字段统一用 _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,区域或大盘的同一指标必须重算而不能取自门店行;如果命名不加区分,下游很容易直接引用错层级的比率字段。
把比率字段当成可加指标参与多维下钻,是报表口径错误的高发点;下钻时先把比率字段从可选字段里去掉,逼着使用者用分子分母重算。