本包目录(311 条)

角色扮演维度

同一个维度在事实表中扮演多个角色:日期维度同时作为下单日期、支付日期、发货日期;建模时复用同一张维度表并通过不同别名或视图使用,避免复制多份。

典型场景日期、门店(发货/收货)、用户(买家/卖家)
实现同一物理维表加多个视图或别名
事实表每个角色一个外键列
查询多次连接同一维度,注意别名

多角色连接

多角色连接
SELECT od.date_desc AS order_date, pd.date_desc AS pay_date, SUM(f.amount)
FROM fact_order f
JOIN dim_date od ON f.order_date_sk = od.date_sk
JOIN dim_date pd ON f.pay_date_sk  = pd.date_sk
GROUP BY od.date_desc, pd.date_desc;
给每个角色取清晰的外键名(order_date_sk / pay_date_sk),否则两个日期列很容易接错。

易错点

  • 为每个角色复制一份日期维度表,日历口径修改时漏改其中一份
  • 多角色连接时条件写反,统计口径整体偏移

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》角色扮演维度
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌