基本认同以下知乎作者的观点。
【一】场景不同,目的不同。主数据表和维度表来在两个领域:主数据治理、数仓。(1)主数据治理的目的是通过同一对象信息跨系统统一,解决业务系统数据孤岛,实现业务串联。(2)数仓是从业务应用出发,做的数据建模。
【二】相互联系、互相转化。但两者不是完全无关的。(1)主数据表是治理后的数据,可用于维表建设;(2)如果没有建设主数据,可把维度表当作主数据使用(不推荐)。
-----以下是摘自知乎 作者的原文(主数据与数据仓库维度表的定位如何区分 - 知乎 (zhihu.com))
在给这个问题做最终定性之前,先说说从理论上两者的区别:
主数据,主要指一个企业各个部门之间需要共享的数据内容,该部分数据一般是指业务对象的描述,以及标准的附录代码/数据字典等参考数据。
主数据管理是一个完整的流程,包括主数据的识别、主数据建模、主数据采集/抽取、主数据整合、主数据发布、主数据服务等。
虽然有的企业或者咨询公司把指标数据也纳入主数据的范畴,但我并不认同,我认为主数据还是立足于业务对象和参考数据。
与数据仓库维度表对应的,只是主数据管理的最终成果,如组织机构、产品等主数据的最终数据。
主数据的核心作用是为了让那些各个部门都使用的数据有一个统一的口径。我们拿医院举例子,门诊挂号,有个人的身份识别是00001,那影像科的化验中,这个人的身份识别应该也是00001才对,否则医院进行诊断的时候,无法从系统中直接获取这个病人的检查资料。
那数据仓库的维度表呢?
一般用来和主数据对比的基本上都是对象类的维度表,如病人维度、部门维度等。维度表主要是用于各粒度和层次的事实表统计。
两者的区别在哪儿?
从理论上来说,主数据主要是侧重于管控流程,维度主要是为了统一计算口径。当然,这是从理论角度来说的。
理想的管理模式
我认为理想的管理模式是这样的:
1、企业有完善的主数据管理流程,有现阶段的主数据识别结果和一堆标准的主数据;
2、有完善的主数据变更跟踪、更新流程,能够保证主数据随业务进展而实时更新;
3、维度表中涉及业务对象或者分类的维度,数据从主数据中提取,仅提取与统计维度相关的信息。
如供应商主数据中除了包含供应商的ID、名称、代码、所在地、商品范围、营业执照、地址、人员数量等信息,但在分析时,营业执照、地址、人员数量等信息并不在我的分析范畴内,那我的供应商维度表可能仅仅取供应商的ID、名称即可,我只关心哪个供应商的销售额高,对于其它信息从数据分析上并不关注。
4、因为主数据的更新受主数据管理流程约束,能够正常更新,所以维度表的变更只需要关注主数据即可,根据需要选择直接修改或者设置缓慢变化维。
至于“能不能将维度数据作为主数据提供给服务方”这个问题,我是这样理解的:
1、你的整个体系中有完整的主数据管理。
如果你的数据体系中,有主数据“识别-建模-采集/抽取-发布-服务”的完整流程,那建议按照上面说的“理想模式”,从主数据中抽取与数据分析有关的字段组成维度表。
业务方的数据共享需求,仍然以主数据系统的数据服务为准。
2、你的数据体系中没有完善的主数据管理。
这个时候,说明你主数据相关维度表的整理过程将是耗费了大量的时间,而且大概率你为了能有效管理这些信息,把与统计无关的主数据信息也放到了维度表中。
这种情况下,其实维度表既承担了数据统计口径的职能,也承担了主数据信息发布的职能,是可以提供给业务方的。
只是这种情况下,你的企业并没有完善或者成型的主数据管理流程,未来主数据新增或者更新会很麻烦。