首页/数据/数仓建模速查/退款事实与原单关联
维度与事实设计149 条

退款事实与原单关联

退款事实记录退款单号并保留原订单/原支付流水号:既能算退款率,也能做「原单-退款」配对分析;只记金额无法回溯。

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

退款必须能回到原单

退款事实表每笔退款一行,除退款单号与金额外,必须保留原订单号或原支付流水号。有了这个关联键,既能算退款率,也能做原单与退款的配对分析,看清哪些商品、渠道、批次的退款集中。只记退款金额而不留原单键,退款就成了一笔无法追溯来源的孤立流水,跨期退款归属、部分退款核销都做不了。

基本信息

粒度一笔退款流水一行
关联键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状态与到账时间未到账退款被计入,指标虚高
跨期退款比例高的业务,按退款发生日与按原单日算出的两条曲线差异明显,报表必须固定默认归属,同时允许切换观察。
部分退款要在行级保留可核对的信息,既记退款单与金额,也记对应的订单行或商品,否则退款集中度分析只能停在订单层。

易错点

  • 退款只记金额不留原单键,退款来源无法追溯
  • 退款率分子分母时间归属错位,单日退款率超过百分之百
  • 部分退款未计入分子,退款率长期偏低
  • 未到账、已撤销的退款直接计入,指标虚高且与财务对不上

数据来源与参考

  • 数仓建模实践:退款与逆向流程
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌