星座模型是什么
星座模型又叫事实星座,指多张事实表共享若干一致性维度的组合形态。它在总线架构下属于常态而不是特殊模式:订单、支付、退款各自成表,但都复用日期、用户、门店这几个维度,于是围绕同一批维度形成一组相互对得上的事实。这种结构让跨过程分析成为可能,前提是共享维度的版本、时间口径与编码都必须对齐——维度一旦分叉,星座立刻退化成互不相干的孤岛。
基本信息
| 结构 | 多张事实表 + 共享若干一致性维度 |
|---|---|
| 成立前提 | 共享维度已完成一致性治理(同源同版本) |
| 典型场景 | 跨过程分析:下单、支付、退款、履约互相对照 |
| 风险 | 共享维度未对齐,跨事实对比结论不可信 |
典型使用场景
- 跨过程指标对比:同一天同一渠道的下单与支付金额并列展示
- 对账分析:订单与支付按一致性维度对齐,差异即环节流失
- 多主题集市:交易、履约、财务三个主题共享日期与用户维度
- 自助分析:业务方围绕同一批维度自由组合多个过程的数据
- 模型演进:新增业务过程时复用已有维度,避免重复建设
共享维度下的多事实
共享维度下的多事实
-- 订单与支付共享日期、用户、门店维度,按同一粒度对齐
SELECT d.dt,
sum(o.item_amt) AS order_amt, -- 过程一:下单金额
sum(p.pay_amt) AS pay_amt -- 过程二:支付金额
FROM dim_date d
LEFT JOIN fact_order o ON d.dt = o.dt
LEFT JOIN fact_pay p ON d.dt = p.dt
GROUP BY d.dt; -- 必须按一致性维度聚合
-- 直接按明细 join 会把金额放大,正确做法是两侧先各自聚合再对齐
-- 维度版本需一致:两张事实必须引用同一份维表版本星座成立条件
| 条件 | 要求 | 不满足的后果 |
|---|---|---|
| 维度版本 | 各事实引用同一版本维表 | 同名维度口径不同,对比失真 |
| 时间口径 | 统一日期维度与时区 | 跨过程指标错期 |
| 汇总校验 | 按天对账两事实差异 | 差异被长期掩盖 |
| 维度编码 | 共享维度编码表统一 | join 命中率低,出现孤儿键 |
星座模型和星型模型不是对立关系:每一张事实表与其维度仍构成星型,多张星型共享维度后就形成星座。设计顺序永远是先把单个星型做对,再考虑共享。
跨事实直接 join 合并会同时产生口径与行数两类错误,因此规范做法是各自按一致性维度聚合后再对齐,必要时用全外连接保留单边数据。