代理键与自然键

代理键是数仓生成的无业务含义整数键(自增或序列),用于事实表关联维度并支撑缓慢变化维的多版本;自然键(业务键)用于与源系统对齐、识别同一实体。

代理键数仓生成、唯一、无业务含义
自然键源系统业务主键(订单号、用户ID)
分工事实关联代理键,对账追溯自然键
生成自增序列 / 单调递增 ID / 哈希

两个键并存

两个键并存
SELECT u.user_id AS natural_key,
       u.user_sk AS surrogate_key,
       u.city, u.is_current
FROM dim_user u
WHERE u.user_id = 10086;
跨库联合建模时哈希键便于统一,但要处理碰撞与顺序性问题;多数场景自增序列更直观。

易错点

  • 事实表直接存业务键,SCD2 多版本时无法定位当时的维度版本
  • 给代理键赋予业务含义(如把地区码编进 key),后续变更即返工

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》代理键(Surrogate Key)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌