本包目录(311 条)

退化维度

退化维度是没有独立维度表的业务标识符(订单号、流水号、发票号),直接存进事实表;既能唯一定位业务事件,又免去为高基数字段单独建维度。

形态事实表里的业务单号字段
特点基数高、属性少或无属性
作用明细追溯、去重、与源系统对账
不建议为其建一张只有 id 的维度表

退化维度用法

退化维度用法
-- 事实表内直接保留订单号
CREATE TABLE fact_trade_order (
  order_id BIGINT COMMENT '退化维度:订单号',
  user_sk BIGINT, product_sk BIGINT, pay_amount DECIMAL(18,2)
) PARTITIONED BY (dt STRING);

-- 追溯某订单明细
SELECT * FROM fact_trade_order WHERE order_id = 20261011001;
退化维度常与去重统计配合:COUNT(DISTINCT order_id) 统计订单数,数据天然来自事实表。

易错点

  • 把订单号建成维度表,白白多一次连接且维度表快速膨胀
  • 退化维度字段被改名或截断,导致与源系统对账困难

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》退化维度
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌