《全链路数据治理-智能数据建模 》——大白话数据建模(2) https://developer.aliyun.com/article/1231149?groupCode=tech_library
5. 数据域与总线矩阵
现在摆在你面前的是一堆零散的需求,你不太清楚从哪里开始着手进行分析,这个时候,分而治之的思想就派上用场。
你将零散需求进行分类,后续再一一展开,这个过程被叫做数据域划分。
数据域划分:数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。
数据域需要抽象提炼、并且长期维护和更新的,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域或者扩展新的数据域。
最终,你梳理出来本次需求的数据域如下所示:
上面我们提到,事实表为了更好地进行分析,往往会冗余一些维度属性,例如交易域的“购买商品”业务过程,会冗余店铺、商品、会员等维度信息,因此,我们还需要分析业务过程与维度的关联关系,这个时候,就要用到总线矩阵了。
总线矩阵:是一种在全局视角理解数据结构的一种工具,可以让相关人员对整个数仓结构能够有清晰了解,很容易就能看出来数据域与业务过程、维度的关系;以及业务过程与维度的关系。
由业务过程和维度的关联关系构成的表格,就称之为总线矩阵,可以很清晰的看出:
• 业务过程与维度的关系:方便我们在开发时对照需要冗余的维度属性。
• 数据域与业务过程/维度的关系:方便开发时就做好数据资产的归类,便于后续复用。
6. 数仓分层
在需求分析完成后,你开始帮助大家开发需求。在开发过程中你发现,为了满足大家的需求,你需要将新/老用户的判断重复写在三份SQL 代码里,一方面代码冗余,另一方面计算成本也更高,后面如果口径需要变更,还需要修改三个地方。
聪明的你又开始思考可否对数据仓库做抽象,通过中间层的建设来提高后续的开发效率。最终,你想出来的方案如下:
• ODS 层:数据准备区,是数据开发的预热阶段,目标是1 比1 完整接入数据,仅仅要求全,不用对原属数据做变更。这一步,你将便利店的数据从源头系统拉取过来。
• CDM(Common Data Model):通用数据模型层,这一层是你主要开发的部分
构建DIM 层:目标是将维度表统一管理起来。这一步你从ODS 层,给买家维度表开发新/老买家标记。
构建DWD 层:目标是对事实表做一些提前计算,例如拼接维度表的字段,进行数据清洗,让数据好用。这一步你将交易事实表进行加工,添加了刚刚开发的买家维度表里的新/老用户的标记。
构建DWS 层,目标是根据指标对数据适度汇总。这一步你便可以生产出最近N 天的新买家/老买家的日均支付金额和订单数等信息。
• 构建ADS 层:与业务直接关联的需求在此完成。例如最近N 天新品新买家日均支付金额。
根据上述划分,你设计的表分层如下:
可以想象,假如后续多招聘了一位数据开发同学,他就可以基于你构建的CDM 层数据,来完成ADS 层的建设。
总结一下,通过遵循数据仓库建模,有以下好处:
• 屏蔽源头系统业务变更、系统变更对于下游用户的影响:如果源头系统业务发生变更,相关的变更由DW 层来处理,对下游用户透明,无须改动下游用户的代码和逻辑。
• 屏蔽源头业务系统的复杂性:源头系统可能极为繁杂,而且表命名、字段命名、字段含义等可能五花八门,通过DW 层来规范和屏蔽所有这些复杂性,保证下游数据用户使用数据的便捷和规范。
• 避免重复计算和存储:通过汇总层的引入,避免了下游用户逻辑的重复计算,节省了用户的开发时间和精力,同时也节省了计算和存储。
• 数据仓库的可维护性:分层的设计使得某一层的问题只在该层得到解决,无须更改下一层的代码和逻辑。
7. 小结
基础知识到这里就结束了,接下来会讲述围绕着数据建模理论,数据研发团队的研发流程是如何建立的。
《全链路数据治理-智能数据建模 》——大白话数据建模(4) https://developer.aliyun.com/article/1231145?groupCode=tech_library