首页/数据/数仓建模速查/特殊成员行:未知、无、合计
维度与事实设计149 条

特殊成员行:未知、无、合计

维度里常用特殊行表达缺失关系:未知(源未提供)、不适用(业务不存在)、合计(供快速汇总,慎用);编码与代理键要固定且文档化。

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

特殊成员行的作用

维度表中用固定代理键承载「源系统没有提供」和「业务上不适用」两类情况,避免事实表因为查不到维度成员而丢行或直接失败。常见约定是 -1 表示未知、-2 表示不适用,也有团队用 0 表示未知,选哪一种都能用,难点在于全链路统一。合计行只在少数场景作为预聚合成员存在,物化进维表会让下钻分析与明细对不上。特殊成员的编码、名称与使用规则要写进口径文档并冻结,新增类型需走评审。

基本信息

-1未知成员:源提供了业务键但维表无对应记录
-2不适用成员:业务上不存在该关系
0 或 -3部分团队预留,含义须在团队内统一
合计行多数场景不物化进维表

典型使用场景

  • 事实加载时外键在维表查不到,落 -1 并计数告警,避免任务直接中断
  • 新业务流程上线、维表尚未同步时,用不适用成员保证事实不丢
  • 报表需要把「未知归属」单独成行,让缺失可见而不是被合并隐藏
  • 与财务对账时区分未知与不适用,两类缺失的追责方向完全不同
  • 日常巡检把未匹配行占比作为维表同步链路的健康指标,早于下游报错发现延迟

预置与统计

预置与统计
-- 维表预置特殊成员,代理键一经确定不再变动
INSERT INTO dim_customer (customer_sk, customer_id, customer_name)
VALUES (-1, 'UNKNOWN', '未知'), (-2, 'NA', '不适用');

-- 加载后统计未匹配行,超过阈值即告警
SELECT count(1) AS unmatched_rows
FROM dwd_order o
LEFT JOIN dim_customer c ON o.customer_id = c.customer_id
WHERE o.customer_id IS NOT NULL AND c.customer_sk IS NULL;

成员约定

成员编码使用规则
未知-1有业务键但维表未匹配到,需追查同步延迟
不适用-2业务上不存在该关系,如线下单无线上账号
合计通常不物化汇总由查询层生成,避免下钻时重复计数
用 -1 表示未知、0 表示不适用都可行,关键是同一套数仓里统一;跨表关联时若两套约定混用,会把两类缺失混成一个数。特殊成员还应从客户数、活跃数等业务口径中排除。
特殊成员在维表里通常是一条不参与 SCD 版本管理的占位记录;若维表带生效、失效时间列,它的区间要写成开放区间,否则按时间区间关联时依然查不到,会退回按业务键关联的老问题。

易错点

  • 缺未知成员导致事实表外键约束失败,整批加载中断
  • 把合计行物化进维表,明细与汇总下钻时金额翻倍
  • 特殊成员进入业务口径计算,缺失被当成真实客户计入
  • 未匹配占比不监控,维表同步延迟长期无人发现

数据来源与参考

  • 数据仓库工具箱:未知成员行
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌