| 问题 | 一条事实对应多个维度成员 |
|---|---|
| 桥接表 | 事实代理键 × 维度代理键 + 权重 |
| 权重 | 用于按主次分配度量,避免重复计算 |
| 替代 | 也有团队在维表存字符串数组简化查询 |
桥接表结构
桥接表结构
CREATE TABLE bridge_order_promo (
order_sk BIGINT, promo_sk INT, weight DECIMAL(5,2)
);
-- 按权重分摊订单金额
SELECT p.promo_name, SUM(f.pay_amount * b.weight) AS allocated_amt
FROM fact_order f
JOIN bridge_order_promo b ON f.order_sk = b.order_sk
JOIN dim_promo p ON b.promo_sk = p.promo_sk
GROUP BY p.promo_name;不设权重直接连接会把订单金额按优惠券数量重复计算;若只需命中哪些券,用无事实事实表更简单。