自然键怎么选
自然键是来自源系统的业务唯一标识,选择标准是稳定、不重复、非空。优先用业务唯一编码(客户号、订单号),没有单键时用固定顺序的组合键,例如订单号加行号;要避免使用手机号、昵称这类会改名或可复用的字段。
基本信息
| 候选键 | 客户号、订单号、证件号、设备标识 |
|---|---|
| 组合键 | 订单号加行号、账户号加币种 |
| 禁忌项 | 手机号、昵称等可改名或可复用的值 |
| 稳定性要求 | 自然键变更要评估历史关联影响 |
| 登记位置 | 数据字典与维度设计文档 |
典型使用场景
- 维度去重:判断源记录是新成员还是已有成员
- 跨源合并:不同系统的自然键通过映射表统一到代理键
- 增量比对:用自然键关联判断记录是否已存在
- 质量校验:自然键重复率是维度质量的核心指标
- 变更评估:更换自然键会影响历史关联,必须走评审
组合键与重复检查
组合键与重复检查
-- 组合键:列顺序与格式两端必须完全一致
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;键类型与风险
| 键类型 | 示例 | 风险 |
|---|---|---|
| 单业务键 | 客户号、订单号 | 源系统改造时可能变更 |
| 组合键 | 订单号加行号 | 列顺序或格式不一致导致关联失败 |
| 可复用值 | 手机号、昵称 | 换号或改名后历史错位 |
| 代理值 | 序列、哈希 | 无业务含义,需要映射表还原 |
组合键要固定列顺序与格式:拼接顺序或大小写不一致时关联会静默失败,结果看起来像数据缺失而不是报错,排查代价很高。
自然键为空要提前处理:空值无法参与关联,通常只能落到未知成员,需要在入维前规整并记录来源。