退款必须能回到原单
退款事实表每笔退款一行,除退款单号与金额外,必须保留原订单号或原支付流水号。有了这个关联键,既能算退款率,也能做原单与退款的配对分析,看清哪些商品、渠道、批次的退款集中。只记退款金额而不留原单键,退款就成了一笔无法追溯来源的孤立流水,跨期退款归属、部分退款核销都做不了。
基本信息
| 粒度 | 一笔退款流水一行 |
|---|---|
| 关联键 | refund_id 与 origin_order_id 或 origin_pay_id |
| 度量 | 退款金额、退款原因、退款类型 |
| 状态 | 申请、审核、到账分状态记录 |
| 归属口径 | 按退款发生日或按原单日,需声明 |
典型使用场景
- 计算退款率,并与商品、渠道、门店等原单维度交叉分析
- 定位退款集中的批次或供应商,支撑质量追责
- 处理跨期退款:本月退上月单,两种归属口径分别出数
- 部分退款场景核对退款金额与订单行金额的对应关系
- 与支付渠道账单对账,确认退款已实际到账
- 分析退款审批环节的停留时长,定位审核堆积在哪个节点
- 退款原因与商品维交叉,识别高退款商品并反馈选品
退款率与配对
退款率与配对
-- 退款率:分子分母按同一时间口径归属
SELECT substr(r.refund_ts, 1, 10) AS dt,
sum(r.refund_amt) / nullif(sum(r.origin_pay_amt), 0) AS refund_rate
FROM fact_refund r
WHERE r.status = 'success'
GROUP BY substr(r.refund_ts, 1, 10);
-- 配对分析:按原单维度看退款集中度
SELECT o.channel_sk, sum(r.refund_amt) AS refund_amt
FROM fact_order o JOIN fact_refund r ON r.origin_order_id = o.order_id
GROUP BY o.channel_sk;字段用途
| 字段 | 用途 | 缺失后果 |
|---|---|---|
| refund_id | 退款唯一标识 | 重复退款无法去重 |
| origin_order_id | 关联原订单 | 无法做配对与归因分析 |
| refund_amt | 退款金额 | 部分退款无法与行金额核对 |
| refund_type | 整单退、部分退、仅退款 | 口径混用导致退款率偏差 |
| status / refund_ts | 状态与到账时间 | 未到账退款被计入,指标虚高 |
跨期退款比例高的业务,按退款发生日与按原单日算出的两条曲线差异明显,报表必须固定默认归属,同时允许切换观察。
部分退款要在行级保留可核对的信息,既记退款单与金额,也记对应的订单行或商品,否则退款集中度分析只能停在订单层。