首页/数据/数仓建模速查/星座模型 Galaxy Schema
建模基础69 条

星座模型 Galaxy Schema

星座模型(事实星座)是多个事实表共享若干一致性维度的组合形态,是总线架构下的常态而非特殊模式。

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

星座模型是什么

星座模型又叫事实星座,指多张事实表共享若干一致性维度的组合形态。它在总线架构下属于常态而不是特殊模式:订单、支付、退款各自成表,但都复用日期、用户、门店这几个维度,于是围绕同一批维度形成一组相互对得上的事实。这种结构让跨过程分析成为可能,前提是共享维度的版本、时间口径与编码都必须对齐——维度一旦分叉,星座立刻退化成互不相干的孤岛。

基本信息

结构多张事实表 + 共享若干一致性维度
成立前提共享维度已完成一致性治理(同源同版本)
典型场景跨过程分析:下单、支付、退款、履约互相对照
风险共享维度未对齐,跨事实对比结论不可信

典型使用场景

  • 跨过程指标对比:同一天同一渠道的下单与支付金额并列展示
  • 对账分析:订单与支付按一致性维度对齐,差异即环节流失
  • 多主题集市:交易、履约、财务三个主题共享日期与用户维度
  • 自助分析:业务方围绕同一批维度自由组合多个过程的数据
  • 模型演进:新增业务过程时复用已有维度,避免重复建设

共享维度下的多事实

共享维度下的多事实
-- 订单与支付共享日期、用户、门店维度,按同一粒度对齐
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 合并会同时产生口径与行数两类错误,因此规范做法是各自按一致性维度聚合后再对齐,必要时用全外连接保留单边数据。

易错点

  • 共享维度未对齐:星座退化为互不相干的孤岛,跨过程结论互相矛盾
  • 跨事实明细直接 join:行数放大与口径混用两类错误同时发生
  • 时间口径不一致(含时区差异):按天对账长期存在无法解释的差额
  • 共享维度新增属性只改一张事实的引用版本:两表维度语义悄悄分叉

数据来源与参考

  • Kimball 方法论:事实星座
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌