个人可以做网站百度账号登录官网
数仓建模简介
一句话总结
数仓建模中的“建模”是一个将数据有序组织和存储起来的过程,旨在提高数据的使用效率和降低使用成本。
详细描述
在数仓建模中,“建模”指的是构建数据模型,也就是数据的组织和存储方法。数据模型强调从业务、数据存取和使用角度合理存储数据,其目标是让数据有序地组织和存储起来,从而实现高性能、低成本、高效率、高质量的数据使用。
数据仓库建模的主要意义在于,通过合理的数据组织和存储方法,能够快速查询所需要的数据,减少数据的I/O吞吐,提高使用数据的效率。同时,它也能极大地减少不必要的数据冗余,实现计算结果复用,极大地降低存储和计算成本。
在数仓建模中,常见的模型包括维度模型等。维度模型通过事实和维度两个概念对复杂的业务进行呈现。其中,事实通常对应业务过程,而维度则对应业务过程发生时所处的环境。这种模型相对清晰、简洁,能够帮助人们更好地理解业务数据。
总之,数仓建模中的“建模”是一个将数据有序组织和存储起来的过程,旨在提高数据的使用效率和降低使用成本。
数仓建模流程
1. 业务调研
建模之前先梳理清楚,数据仓库涵盖哪些业务线,每个业务线包含哪些业务模块。我们可以参考阿里电商的这个图表进行梳理:
最终我们根据自己的业务线填写下面表格:
功能模板/业务线 | 业务1 | 业务2 | 业务3 |
---|---|---|---|
模块1 | |||
模块2 | |||
模块n |
着重说明:建立一个好用的数仓,业务一定要非常熟悉。可能我们只有一个业务线(也可以是一个系统),这个业务线中包含哪些模块,开发系统的人,或者使用系统的业务人员是非常清楚的,可以沟通后进行梳理。
2. 需求调研
- 根据业务人员沟通需求,最终形成需求文档
- 开发需求需要哪些维度和度量
3. 数据域划分
-
数据域
业务过程和维度的抽象。
根据业务流程、根据系统、根据部门等等,需要注意的是,数据域的目的就是为更好的组织数仓中的数据,可以联想图书馆会把图书根据不同的专业放到不同的书架,只要可以更好的找到数据就可以划分为数据域。
常见的一个划分思路:比如是构建一个集团的数仓,那么就可以根据部门划分,如果是构建某个部门的数仓,就可以根据业务系统、流程来划分。 -
如何划分
根据业务流程、根据系统、根据部门等等,需要注意的是,数据域的目的就是为更好的组织数仓中的数据,可以联想图书馆会把图书根据不同的专业放到不同的书架,只要可以更好的找到数据就可以划分为数据域。 -
评判标准
划分数据域时,既能涵盖当前业务需求,又能在新业务进入时,无影响的进入已有数据域中或者扩展新的数据域。 -
参考阿里电商
4. 构建总线矩阵
- 做两件事
- 明确每个数据域下有哪些业务过程
- 业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度
-
总线矩阵模板
-
参考阿里电商
5.规范定义
- 规范定义
主要是定义指标体系,原子指标、修饰词、时间周期和派生指标。 - 指标体系
指标体系包含原子指标、派生指标、修饰类型、修饰词、时间周期。 - 原子指标/度量
原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务中不可再拆分的指标,具有明确业务含义的名词,如支付金额。 - 派生指标
派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。如原子指标:支付金额,最近1天海外买家支付金额则为派生指标(最近一天为时间周期,海外为修饰词,买家作为维度,而不是修饰词)。 - 修饰类型
是对修饰词的一种抽象划分。修饰类型从属于某个业务领域,如日志域的访问终端类型涵盖无线端、PC端等修饰词
6. 模型设计
主要包括维度即属性的规范定义,维表、明细事实表和汇总事实表的模型设计。
- 度量称为事实:我更喜欢把连续型的数值称为事实
- 环境描述称为维度:我更喜欢把离散型的字段称为维度。
维表和实时表模型设计内容较多,我们会放到后面讲解。
总结
根据我的经验,很多公司做数仓建模流程都和上面的类似,但又都不太相同,有的极其缩减,尤其是较小项目。因此我们在做的时候可以参考上面流程,但不要可以生搬硬套,有的时候甚至一个简单的事情,由于自己刻意要生搬硬套相关概念,导致迟迟不能入手开发。
一个简单的数仓项目,甚至可以简化到只要明确划分ods、dwd、dim、dws层级就可以使用。但是一个好用的数仓,显然就有更多的规范约束了。