☰
企业级数据模型3.0落地方案:从主题域到数据资产治理
2026/10/20 9:05:48 网站建设 项目流程

简介:《中国电信企业数据模型3.0》是中国电信CTG-MBOSS中EDA分总体规范的一个分册,面向电信数据架构、数据治理及BSS系统设计与开发人员,目标是统一企业数据标准,提升数据的一致性、准确性和可用性。压缩包内为1个doc格式文件,大小4.45MB,已有299人浏览学习。文档从编制说明与概述入手,系统讲解概念数据模型、逻辑数据模型、物理数据模型的分层设计,并围绕参与人、产品、帐务、市场营销、事件和地域六大主题域展开,重点描述BSS部分的数据模型修订,涵盖主题域LEVEL0/LEVEL1/LEVEL2逐级分解以及建模原则、维护原则。适合需要落地EDM/EDW/ODS数据架构、开展数据标准化治理或进行系统改造的实践者作为案头参考。

1. 从「各说各话」到「一张数据地图」:企业数据模型3.0在解决什么

做数据的人最怕的一件事,就是同一个「用户」在计费系统里叫「客户标识」,在客服系统里叫「用户号码」,在经营分析系统里又叫「主叫号码」。跨域取数的时候,数仓团队要拿着口径清单逐个跟业务确认,一确认就是两三天,等数据拿到手,业务已经改需求了。某个大型电信运营商内部分析师有个说法:数据团队一半的时间不是在做分析,是在跟上游对口径。这种事经历几次,你就明白企业级数据模型不是一个文档,而是数据资产的「宪法」——它定义的是全公司统一怎么说数据,而不是某个系统自己怎么存数据。

中国电信企业数据模型3.0,正是围绕这个矛盾展开的:它是一套覆盖客户、产品、订单、账务、资源、服务等核心主题域的企业级数据模型规范,目标是把散落在各业务系统中的数据,按照一套统一的实体、属性、关系重新组织起来,让数据在跨系统、跨域流转时口径一致、能对得上。这套模型适合正在做数据仓库、数据中台或集团级数据汇聚的人,尤其是那些每天被跨域取数、口径核对、模型评审折磨的开发者。它不解决具体某个报表怎么写,它解决的是报表背后的数据从哪来、怎么定义、跟谁关联。

2. 模型3.0的核心架构:从概念到物理的三层拆解

2.1 概念模型层:主题域划分与业务对象边界

先看概念层,它是整个模型的「目录骨架」。3.0将企业核心业务抽象为若干主题域,常见划分包括客户域、产品域、订单域、账务域、服务域、资源域、渠道域等。每个主题域对应一组高内聚的业务对象,例如客户域包含客户、客户账户、客户联系人,产品域包含产品、产品套餐、产品资费。

做主题域切分时,最关键的判断标准不是系统边界,而是业务对象的生命周期和归属关系。比如「客户」和「用户」,在很多老系统里是混着用的:一个自然人在前台办了宽带,是「客户」;后台分配了一个宽带账号,是「用户」。概念模型里这两个必须分开,因为客户是签约主体,用户是产品事实上的使用者,二者的变更频率、数据量级、隐私等级完全不同。这个区分直接影响后续逻辑模型里的主键设计和数据分布策略。

概念模型层的产物是一张业务对象全景图和一个术语表。团队在做数据资产盘点时,第一步要做的就是拿这套术语表去对现状系统的字段名,凡是出现「同义不同名」或「同名不同义」的字段,全部登记为待治理项。这个过程不建议手动过,最好用元数据工具把各系统表结构批量拉出来做字段级比对,靠人工逐张表看会漏掉大量隐蔽的不一致。

2.2 逻辑模型层:实体、属性与关系的标准化

逻辑模型层是把概念模型翻译成可落地的结构定义,核心产出是实体清单、每个实体的属性集、实体间的关系(1:1、1:N、M:N)以及外键约束。3.0在这里做了件比较重要的调整:强调属性定义必须「就高不就低」,即同一个业务属性在集团层面只保留一个权威定义,省分或专业公司在本地扩展时不允许另起一套。

举个例子,「客户星级」这个属性在渠道域里可能是1到5的整数,在客服域里是字符串「钻石/金/银」,在营销域里又变成了区间段。逻辑模型层会统一定义为标准枚举值,并提供映射规则,各地系统可以保留自己的存储形式,但对外提供数据时必须转换为标准编码。这个约束带来的直接好处是:跨域Join时不再需要写一堆 CASE WHEN 做枚举转换。

逻辑模型层另一个容易忽略的细节是关系字段的命名规范。很多系统习惯用「创建人」「创建时间」这类审计字段放在每个表里,逻辑模型会统一为「创建人ID」「创建时间戳(精确到毫秒)」,并在关系定义中明确哪些字段可以被多个实体共享,哪些只能在所属实体中存在。这个看似细碎的约定,在实际做数据血缘分析时能省下大量排查时间。

2.3 物理模型层:从逻辑到库表的落地策略

物理层是把逻辑模型映射为具体的表结构、索引、分区方式和存储策略。3.0在物理层的落地并不强制一张逻辑实体对应一张物理表,而是允许按数据规模、访问频率做分表或合并。常见做法是:高变更频率、高并发写入的实体(比如订单、话单)按时间分区;相对稳定的字典类实体(比如地区编码、产品目录)做成维表,存放在通用的维度库中。

这里有一个实践中的选型取舍:物理表命名是否要跟逻辑实体名保持一致。我见过不少团队在物理层重新发明了一套简洁表名,理由是原逻辑名太长或太啰嗦,结果后续做数据血缘和元数据追踪时处处碰壁,反向追溯成本极高。建议物理表名保留逻辑实体名的关键语义,只在后缀上区分分层(ODS、DWD、DWS),例如客户主题对应的明细表命名用 dwd_cust_customer_info_di 这类风格,看到名字就能猜到它来自哪个实体。

物理模型落地时还要考虑编码问题。电信领域大量使用组合编码,比如地区编码、网元编码、套餐编码,这些编码在逻辑模型里有标准定义,但老旧系统实际存储的可能是不定长的前缀码。物理层建议统一按标准编码建列,同时保留一个「原始编码」列便于溯源,不要直接覆盖源头系统的值,否则数据审计时会有麻烦。

3. 从2.0到3.0:这次升级到底改了什么

3.1 架构思路的转变:从面向系统到面向业务

2.0时代的数据模型常见问题是跟着系统走的:计费系统有自己的一套表结构,客户关系管理系统有自己的一套实体,模型只是把各系统的表收集起来做了一个「大杂烩视图」。3.0的核心转变是倒过来,先抽象业务对象和业务过程,再反向要求各系统对齐到模型定义的实体和关系上。

这个转变带来一个实质性影响:数据模型的维护者从「各系统DBA的汇总人」变成了「业务数据标准的制定者」。在具体落地时,项目组需要先做一遍业务调研,梳理出企业级的核心业务对象清单,再跟各系统的现状模型做差距分析。这个过程是3.0实施中工作量最大的部分,也是后面所有工作的地基。

做差距分析时有一个经验值得参考:不要一上来就追求所有系统完全对齐,先把各系统里数据量最大、跨域共享需求最频繁的TOP 20实体拿出来对齐,其余实体可以分批次推进。大部分跨域取数的需求都集中在这20个实体上,先把这些理顺,业务方的体感会非常明显。

3.2 数据标准的强化:命名、类型、编码与口径

3.0在数据标准方面的要求比之前明显加强,覆盖了字段命名、数据类型、编码规则、默认值、必填性、口径描述六个维度。其中最容易被低估的是「字段命名」和「口径描述」两类标准。

字段命名标准的难点不在定规则,而在历史系统的存量治理。比如某计费系统的账期字段叫 BILL_CYCLE,某渠道系统的月份字段叫 MONTH_ID,在3.0标准下统一叫 BILLING_CYCLE_ID,如果要改物理表字段名,风险很大。常见做法是:逻辑模型和共享层(DWD/DWS)严格用标准字段名,源系统贴源层(ODS)保留原始字段名,在ETL映射时完成转换。这样既不影响源系统运行,又能让上层应用面对统一的标准字段。

口径描述是另一个容易被忽略但影响面极大的点。同一个「收入」,是含税还是不含税?是应收还是实收?统计范围是集团内还是含合营公司?如果没有在标准里明确写清楚,下游数据分析师就会各猜各的。3.0的标准设计中,每个关键指标都有完整的业务口径描述,包括统计范围、剔除规则、时间口径、币种、税率说明,这个描述不是写给人看的,而是作为元数据的一部分结构化存储,方便后续做指标管理和数据服务时自动带出。

3.3 引入数据资产目录:从模型到可检索、可消费

3.0比较实用的一处演进是引入了数据资产目录机制,把模型实体、表、字段、指标、标签关联起来,形成一套可检索的资产地图。过去模型文档躺在某个共享网盘里,一年都没人下载一次;现在资产目录把模型的每一个实体关联到对应的物理表、加工任务、下游报表和数据责任人。

实际落地资产目录时,建议不要一上来就追求全自动。先做最小可用版本:以逻辑模型的实体清单为骨架,把核心物理表和加工任务手工关联上去,数据责任人落实到具体的人。这个最小目录能跑通之后,再考虑用元数据采集工具做自动补全。直接上自动化工具的后果通常是:自动采集出一堆没人维护的orphan元数据,资产目录反而变成一个新的数据沼泽。

资产目录还有一个实际价值:新人培训。过去新同事入职后了解数据只能靠老员工口口相传,有了资产目录,可以直接从模型实体出发沿着血缘链路看数据流向。这个收益平时不明显,但每当有人离职或转岗,它的价值就会凸显出来。

4. 落地实施:从模型文件到生产环境的完整路径

4.1 第一步:模型解读与本地化映射,别急着建表

拿到3.0模型文档后,第一件事不是建表,而是做本地化差异分析。标准模型是全集团通用的一套理想框架,但本地系统往往存在历史遗留字段、区域特色业务和外部接口带来的非标数据。直接照搬建表,后续数据灌不进去或者语义对不上时再返工,代价远高于前期仔细比对。

我建议的起步方式是:先把本地所有系统的表清单汇总,按主题域归类,然后逐表和模型实体做映射,输出一张「现状表 ↔ 模型实体 ↔ 差异说明」的三列清单。差异说明里写清楚是字段缺失、字段冗余、名称不一致还是类型不一致。这一步可以借助元数据管理工具做辅助,但核心的判断还是要靠熟悉业务的人来完成。

差异分析完成之后,把差异项分成两类:「必须治理」和「允许挂起」。必须治理的是指那些直接阻塞跨域数据共享的差异,比如主键不一致、核心业务对象缺失;允许挂起的则包括一些不影响主流数据流通的冗余字段、历史遗留编码。分类时不要贪多,治理范围控制得越小,落地成功率越高。

4.2 第二步:按主题域分批贯标,合理设定优先级

贯标顺序的决策不能按技术难度来,要按业务收益来。推荐的做法是优先贯标「客户域 + 产品域 + 订单域」,因为这个组合覆盖了绝大多数跨域分析场景:比如分析某个套餐(产品)有多少客户(客户)在使用、使用后订单变更趋势如何。把这几个域跑通,业务方就能在数据服务上直观感受到变化,后续推动其他域的时候阻力会小很多。

每一个主题域的贯标过程建议分四个动作:字段映射、转换逻辑开发、数据校验、发布上线。字段映射就是把源系统字段与模型标准字段一一对应,转换逻辑负责把非标格式翻译为标准格式,数据校验是跑数据质量规则确认无重大偏差,最后才是正式上线。整个流程以一个主题域为单位独立推进,避免多个域同时改造导致问题难以定位。

数据校验这一步尤其不能省。常见做法是选择最近三个月的实际数据跑一批对照测试:用标准模型加工出的结果跟老口径加工出的结果对比,差异率超过阈值就要回头查转换逻辑。阈值建议设在万分之五以下,超过这个比例说明有系统性偏差,不是零星脏数据。这个步骤做完,才能对下游使用者承诺数据质量。

4.3 第三步:模型管控与持续演进,防止模型烂尾

模型3.0不是一次性项目,它需要长期维护,否则半年之后模型文档和数据现状又会脱节。管控机制里最核心的一条是:所有新建数据表、新增字段、修改口径都必须先过模型评审。具体操作上,数仓团队可以设置一个「数据模型变更申请」流程,任何新增或变更都要提交影响分析,关联到对应模型实体和资产目录条目,评审通过后才能动工。

这个流程看起来增加了开发负担,但它防止的是更贵的返工。实践中最常见的反例是:开发图省事,在已有的宽表里随手加了一个字段,没有登记到模型里。一次两次没问题,积累到几十次之后,模型文档和数据现状完全对不上,资产目录失去可信度,大家又重新回到靠口头问数据从哪来的老路上。

持续演进还要求设定周期性审视机制。建议每季度做一次模型与现状的差异扫描,重点看有没有新出现的表没有被模型覆盖、有没有字段赋值逻辑发生了隐性变更。把这些变化纳入下一版本的模型修订计划,模型才能保持活的状态而不是变成一份「象征性文档」。

4.4 关键角色与协作流程:谁来保证模型落地

模型3.0落地过程中最棘手的往往不是技术,而是组织协作。数据模型不是数仓团队自己关起门来就能定的,它需要业务专家提供术语解释、系统负责人提供现状表结构、数据质量团队参与规则确认、应用开发团队反馈消费需求。如果只有数仓团队自己跑,做出来的模型没有人认,落地必然受阻。

建议的协作组织是:每个主题域设一个模型Owner,由熟悉该域业务和数据的人担任,负责该域的实体定义、争议裁决和演进方向;数仓团队负责模型的技术实现和标准执行;业务分析师作为最终用户参与需求反馈。三个角色缺一不可。模型Owner的授权要落实到具体事项上,比如有权确认某个字段的标准定义、有权要求下游系统按标准接入数据,而不是一个挂名角色。

协作流程上要注意一个容易被忽略的点:模型评审会议不能只拉技术人。新增一个实体或修改一个属性,如果业务口径的变更没让业务方确认,评审通过了也是埋雷。实际操作中我会在评审会之前先把需要业务确认的口径项列成清单,请业务方提前书面确认,评审会上只处理有分歧的问题,这样可以大幅压缩评审时长。

5. 避坑指南:模型3.0落地最常见的5个翻车点

5.1 把逻辑模型直接当成建表脚本去建库

现象:团队拿到3.0逻辑模型文档后,按实体定义直接生成建表语句,一口气建了上百张表,然后发现数据根本灌不进去,部分表存在大量空列,部分表的数据量和预期完全不符。

原因:逻辑模型描述的是业务结构,不含物理存储设计。它不区分这个实体在源系统是一张真实表还是一个视图,也不考虑数据量级、更新频率和访问模式,直接落库自然水土不服。

解决:在物理设计阶段,必须针对每个实体单独做评估。高并发大表做分区和归档策略,低频字典表做维表处理,跨域共享数据做统一的编码和主键设计。建议先拿三到五个核心实体做物理建模试点,验证通了再批量铺开。

5.2 试图把所有老系统一次性改造齐

现象:某项目组立了一个大目标,要把所有存量系统半年内全部对齐3.0模型。推进到第三个月,进度不到三分之一,各系统负责人开始消极回应,有的不再参加评审会议。

原因:存量系统改造牵涉的不仅是数据层,还有上游接口、应用逻辑、报表配置,影响面太大。一次性全量改造的组织阻力大到基本不可能成功。

解决:按第4章的方式分主题域分批推进。先从客户、产品、订单三个高价值域开始,老系统里非核心的业务保持现状,通过数仓的转换层完成适配。核心原则是「先让数据流通起来,再逐步收缩非标面积」。

5.3 维表与事实表的主数据拆分没做好,查询失控

现象:贯标完成后,业务人员反馈「查一个客户的信息要关联七八张表,根本跑不动」「同一个客户在宽表里出现两条记录,到底信哪个」。

原因:逻辑模型严格按范式拆分了实体,物理层没有做合理的汇总和宽表设计。分析师面对上百张规范化表,既难写查询,性能也扛不住。

解决:在逻辑模型之上,面向典型分析场景设计一套汇总层宽表。比如客户主题的宽表,把客户基本信息、账户信息、主要产品订阅信息、最近一次订单时间等高频查询字段合并到一张宽表。宽表字段来源于标准模型,但物理形态经过合并优化,两者不矛盾。

5.4 编码与历史数据不兼容,上线后才发现对不上

现象:某省将本地套餐编码映射到标准编码后上线,次日发现大量历史订单的套餐字段变成了空值或未知,原因是映射规则漏了一类老套餐编码。

原因:映射规则评审时只覆盖了当前在用套餐,历史套餐编码被遗漏。源系统里这类编码实际占订单表的比例约8%,不算低。

解决:映射规则开发完成后,必须用至少一年的历史数据做回刷验证,专门查「标准编码为NULL或UNKNOWN」的记录比例,阈值高于0.5%就要回头补映射。上线前再做一轮全量编码覆盖率统计,确保覆盖所有存在的编码值。

5.5 模型评审流于形式,业务方不参与

现象:项目组坚持每周开模型评审会,但业务方经常缺席,或者派人来但不懂数据,只会点头。会后的模型定义我行我素,数据服务上线后业务方不认账。

原因:模型评审被定义成了技术会议,业务方参与感低,不知道这些实体定义和口径会直接影响他们的分析结果。

解决:把评审会的重心从「表结构评审」转向「业务口径评审」。每次会议前置发布「业务口径确认清单」,里面用业务语言描述:什么是客户、什么是有效订单、收入的口径是什么。让业务负责人逐条确认或提出修改。业务方确认过的口径记录在案,后续有分歧时有据可查。

6. 进阶技巧:用模型3.0反推数据质量与血缘自动化的实战手法

模型3.0落地稳定之后,它的价值远不止「能对上口径」这么简单。一套完整的实体关系网络,天然可以作为数据质量规则和数据血缘的基准。这里分享两个我自己用着顺手的进阶手法。

第一个是用逻辑模型自动生成数据质量规则清单。模型里定义了每个属性的数据类型、长度、是否必填、枚举值域、主外键关系,这些约束可以直接翻译成质量规则。比如客户域的「客户名称」属性定义了必填且长度不超过128字符,对应的质量规则就是「该字段NULL率必须为0,超长字段数量为0」。我见过一个做法是把模型的Excel导入质量平台,脚本自动为每个实体生成一套基础质量规则,覆盖率能达到手工编写的大概七成,剩余三成需要人工补充业务级规则(比如「同一客户ID不能同时存在两个不同的星级」)。这个方法能快速建立质量基线,后续再逐步细化。

第二个是用模型实体关系辅助构建数据血缘。传统血缘靠解析SQL来追踪,有很多局限:存储过程里动态SQL解析不了、跨系统数据同步的链路靠SQL根本看不全。如果以模型为骨架,先把「实体 → 物理表 → 加工任务 → 下游应用」这条链路的拓扑搭出来,再把SQL解析出来的表级血缘挂载到这个骨架上,血缘关系会清晰很多。具体做法是:在资产目录里以逻辑实体为单位画一条主链路,比如「客户实体 → 客户ODS贴源表 → 客户DWD明细表 → 客户DWS汇总表 → 客户标签服务」,然后让每个节点的具体加工SQL血缘作为辅助信息挂在这个节点下面。这样数据问题的排查路径会非常直观:某个报表数据不对,先看它挂在哪个实体链路上,顺着链路逐级检查,而不是在一堆SQL里人肉找。

这两个手法的共同思路是:不要等出了问题再靠人肉排查,而是把模型作为基础设施反哺数据治理。数据质量问题能自动发现,血缘链路能快速定位,模型的价值才会从「规范文档」变成「生产力工具」。我自己在项目里养成的习惯是:每周跑一次质量规则扫描,每月做一次血缘链路的完整性核对,发现新增表没有挂到模型上就马上补登记,避免链路断掉。模型数据对不上时就回头查元数据登记,从源头解决问题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询