首页/数据/数仓建模速查/自然键选择:单键、组合键与业务码
维度与事实设计149 条

自然键选择:单键、组合键与业务码

自然键要稳定、不重复、非空:优先业务唯一编码;无单键时用固定顺序的组合键,并避免使用会复用的字段。

数仓建模速查数据更新于 2026-10-13

自然键怎么选

自然键是来自源系统的业务唯一标识,选择标准是稳定、不重复、非空。优先用业务唯一编码(客户号、订单号),没有单键时用固定顺序的组合键,例如订单号加行号;要避免使用手机号、昵称这类会改名或可复用的字段。

基本信息

候选键客户号、订单号、证件号、设备标识
组合键订单号加行号、账户号加币种
禁忌项手机号、昵称等可改名或可复用的值
稳定性要求自然键变更要评估历史关联影响
登记位置数据字典与维度设计文档

典型使用场景

  • 维度去重:判断源记录是新成员还是已有成员
  • 跨源合并:不同系统的自然键通过映射表统一到代理键
  • 增量比对:用自然键关联判断记录是否已存在
  • 质量校验:自然键重复率是维度质量的核心指标
  • 变更评估:更换自然键会影响历史关联,必须走评审

组合键与重复检查

组合键与重复检查
-- 组合键:列顺序与格式两端必须完全一致
SELECT concat_ws('#', order_id, cast(line_no AS string)) AS order_line_key
FROM stg_order_item;

-- 自然键重复检查:维度质量的第一道门
SELECT customer_id, count(1) AS cnt
FROM stg_customer
GROUP BY customer_id
HAVING count(1) > 1;

键类型与风险

键类型示例风险
单业务键客户号、订单号源系统改造时可能变更
组合键订单号加行号列顺序或格式不一致导致关联失败
可复用值手机号、昵称换号或改名后历史错位
代理值序列、哈希无业务含义,需要映射表还原
组合键要固定列顺序与格式:拼接顺序或大小写不一致时关联会静默失败,结果看起来像数据缺失而不是报错,排查代价很高。
自然键为空要提前处理:空值无法参与关联,通常只能落到未知成员,需要在入维前规整并记录来源。

易错点

  • 用可复用手机号当自然键:用户换号后历史数据错位
  • 组合键列顺序不一致:关联失败,数据静默丢失
  • 自然键不做去重校验:同键多行进入维度表,事实关联翻倍
  • 自然键使用源系统行号:源端重排后键全部变化
  • 未经评审更换自然键:历史事实无法回溯,只能整体重建
  • 自然键含不可见字符或首尾空格:表面相同的两个键被判为不同,产生重复成员

数据来源与参考

  • 数据仓库工具箱:自然键与代理键
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌