类型 5 是什么
类型 5 在迷你维度(类型 4)的基础上再外挂一层:主维表除了指向迷你维度历史键之外,再增加一列「当前迷你维键」,随属性变更以类型 1 的方式覆盖。事实行保存当时的迷你维键,主维的当前键始终指向最新组合。这样同一份历史事实既能按当时的属性组合分析,也能按现在的组合回溯筛选,两种口径不必重建两份数据。
基本信息
| 结构 | 迷你维度 + 主维上的当前迷你维键 |
|---|---|
| 事实行存 | 当时的迷你维键,永不改写 |
| 当前键更新 | 属性变更时按类型 1 覆盖到最新组合 |
| 用途 | 按当前等级筛选历史行为,或按当时组合还原历史 |
| 成本 | 迷你维组合枚举要控制,否则基数逼近主维 |
典型使用场景
- 按当前画像回溯:把老客户按现在的年龄段重新分群,分析历史购买行为
- 按当时画像还原:事实行用当时的组合键,做当时口径的人群分析
- 组合维度枚举:年龄段 × 收入段这类离散组合用迷你维度集中管理
- 报告口径切换:同一批事实按当时与按当前两种分组同时出数
- 画像版本对比:属性组合变化前后的行为差异对比
- 避免稀疏列:把多个离散属性收进一张迷你维,主维保持稳定
结构示意
结构示意
dim_customer(customer_sk, name, current_profile_sk) -- 当前键,类型1覆盖
dim_profile(profile_sk, age_band, income_band) -- 迷你维组合枚举
fact_order(order_id, customer_sk, profile_sk, amt) -- 存当时的 profile_sk
-- 按当时组合看历史行为
-- fact_order.profile_sk -> dim_profile
-- 按当前组合回溯历史行为
-- fact_order.customer_sk -> dim_customer.current_profile_sk -> dim_profile两个键的读法
| 键 | 位置 | 口径 |
|---|---|---|
| profile_sk | 事实行 | 当时口径:事实发生时该客户所属组合 |
| current_profile_sk | 主维表 | 现行口径:客户当前所属组合 |
| customer_sk | 事实行与主维 | 代理键,用于关联主维拿当前键 |
| age_band / income_band | 迷你维度 | 组合属性,供分组与筛选 |
类型 5 最常见的错误是两个键混用:事实里明明存的是当时的组合键,报表却用主维的当前键去分组,于是「按当时口径」的结果实际按现在算了。查询前必须明确报的是哪一种口径,并在字段名或报表说明中写清。