首页/数据/数仓建模速查/多源维度合并
维度与事实设计149 条

多源维度合并

同一客户在主数据与业务系统各有编码时,以主数据为基准建交叉引用表(xref),维度行保留各源编码列供下游关联。

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

多源维度合并是什么

同一个客户在主数据系统、CRM、ERP 里各有自己的编码,入仓时必须合成一条维度记录,否则按客户做的统计会把人拆成三个人。标准做法是以主数据系统为基准,建立交叉引用表(xref)保存各源编码到统一代理键的映射,维度行上保留各源编码列,下游按自己手里的编码就能关联到同一个人。

基本信息

基准主数据系统(MDM)或指定权威源
映射设施xref 交叉引用表:统一代理键 ↔ 各源编码
维度结构一行保留 mdm_code、crm_code、erp_code 等列
匹配手段优先强标识(证件、手机),再模糊匹配(姓名+生日)
维护归属xref 是公共设施,需专人或专门作业维护

典型使用场景

  • 集团多系统整合:并购后两家公司的客户编码需要归一
  • 线上线下一体:门店会员卡号与 App 账号指向同一个人
  • 主数据落地:MDM 下发统一编码,维表补齐各业务系统编码列
  • 跨域分析:按客户维度汇总订单、服务工单与财务结算
  • 新增来源接入:新系统上线时先建映射再导数据
  • 合并排查:发现同一人被拆成多行时,回溯 xref 的匹配结果

交叉引用与合并

交叉引用与合并
-- 1) 按各源编码都能查到同一个代理键
SELECT user_sk, mdm_code, crm_code, erp_code
FROM   dim_user_xref
WHERE  mdm_code = 'U10086';

-- 2) 维度行保留各源编码,下游按手里的编码关联
SELECT f.order_id, d.user_name
FROM   fact_order f
JOIN   dim_user  d ON f.user_sk = d.user_sk
WHERE  f.crm_code = 'C-8899';   -- 业务方只知道 CRM 编码也能查

-- 3) 未匹配清单:进了事实但 xref 里找不到的编码
SELECT DISTINCT o.crm_code
FROM   fact_order o
LEFT JOIN dim_user_xref x ON o.crm_code = x.crm_code
WHERE  x.user_sk IS NULL;

匹配手段对照

手段适用风险
证件号、统一社会信用代码强标识,命中即确认敏感信息需脱敏存储,缺失时不可用
手机号命中率高换号与共用号会误并
邮箱B 端客户常用一人多邮箱会漏并
姓名 + 生日强标识缺失时的备选同名同生日会误并,须人工复核
地址 + 名称近似兜底误并率高,只做候选不做自动合并
自动匹配只用于生成候选,正式合并要保留可回退记录:误并把两个真实客户合成一个,会直接导致收入、应收与信用额度算错,且拆回来比合并更麻烦。合并与拆分都必须写审计日志。

易错点

  • 各系统各自硬编码映射关系:重复维护、规则分叉,一处改了别处不知道
  • 新来源接入无人维护 xref:新编码进不了映射,事实关联大量挂在未知成员
  • 只按姓名匹配就自动合并:同名客户被并成一人,收入与应收直接错账
  • xref 与维度表双向更新不同步:同一客户在 xref 里是一个键,维度里是两行
  • 合并后不清理旧代理键:历史事实指向已废弃的维表行,报表查不到属性

数据来源与参考

  • 主数据与维度整合实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌