1.离线数仓—数据仓库设计

本文详细介绍了数据仓库的设计过程,包括数据仓库的五层分层规划(ODS, DWD, DIM, DWS, ADS),数据调研、数据域明确、构建业务总线矩阵、维度模型和汇总模型设计,以及各表的同步策略。通过实例阐述了业务调研、需求分析和统计指标明确的重要性,旨在提供一套完整的数据仓库设计方案。" 112864976,10329995,网易消息推送系统微服务化实践:Consul服务发现与自动化运维,"['微服务架构', '服务发现', 'Consul', '容器化部署', '自动化运维']

前言

前面对数据仓库做了简要介绍,并了解了数仓建模的相关知识,下面对数据仓库进行设计。

一、数据仓库设计

1.数据仓库分层规划

       就像做java web系统一样要使用MVC架构分为三层,也好比计算机网络五层协议一样,这里数据仓库也需要进行分层,不同的层负责的部分不同,里面的数据也不相同。

在这里插入图片描述
数据从HDFS初始地出发,要依次经过以下五层:
       第一层是ODS层:建立相应的Hive表,使用load命令(剪切操作)将HDFS数据初始位置放到Hive表对应的路径下。只是将数据原封不动的拿过来,基本上不做任何处理。
       第二层是DWD层:基于维度建模理论进行构建,根据ODS的初始数据建立事实表,保存各业务过程最小粒度的操作记录
       第三层是DIM层:基于维度建模理论进行构建,根据ODS的初始数据建立维度表,保存一致性的维度信息。
       第四层是DWS层:保存一些需求计算的中间结果,主要目的是减少重复计算,优化数据仓库。
       第五层是ADS层:存放的是需求对应的各项统计指标结果。

2.数据仓库构建流程

在这里插入图片描述
1)数据调研:
       业务调研:调研的是业务系统的数据和业务系统的业务逻辑(数仓前)
       业务分析:分析的书数仓下游的需求(数仓后)
2)明确数据域:
       数据域(可以不划分,对表没有影响):数据域就是对数据进行分类(分类没有具体的规定,只要合理即可)。例如厨师要去做菜,首先要去找食材,食材比较多,不容易找到,因此要先对食材进行分类,这样就能够根据分类先找到一小部分食材,然后就方便进一步寻找。
3)构建业务总线矩阵:
       业务总线矩阵:业务总线矩阵就是设计维度模型的笔记。它是按照维度建模理论,对业务数据进行分析,抽取出业务过程和维度。
4)维度模型设计:
       维度模型设计(业务驱动):在业务总线矩阵的基础上,对维度模型进行设计。根据前面的业务系统,有什么业务过程,就要建立相应的事实表,业务过程所处的环境有什么,就要建相应的维度表。
5)明确统计指标:
       明确统计指标:对需求进行分析,整理出指标体系,包括原子指标、派生指标、衍生指标。
6)汇总模型统计:
       汇总模型统计(需求驱动):在指标体系明确了之后,就可以知道每个需求中间的计算结果了,这样就可以设计DWS层了。根据需求,不同的需求,导致设计出来的的DWS表不一样。
6)开发:
       开发:在表设计出来后,要知道如何将数据装载到表里。

2.1 数据调研

1)业务调研
       业务调研的主要目标是熟悉业务流程熟悉业务数据
       熟悉业务流程:要熟悉业务系统中的每个业务的流程,把流程中的每个具体过程都弄清楚。
       熟悉业务数据要将数据(包括埋点日志和业务数据表)与业务过程对应起来,明确每个业务过程会对哪些表的数据产生影响,比如买家下单的这个过程会让order_info新增一条数据,会让order_detail新增若干条数据等等。
       下面业务电商中的交易为例进行演示,交易业务涉及到的业务过程有买家下单、买家支付、卖家发货,买家收货,具体流程如下图。
在这里插入图片描述
2)需求分析
       典型的需求指标如,最近一天各省份手机品类订单总额。
       分析需求时,需要明确需求所需的业务过程维度,例如该需求所需的业务过程就是买家下单,所需的维度有日期,省份,商品品类。
3)总结
       在业务调研和需求分析结束后,要确保每个需求都能跟已知的业务过程和维度进行对应,否则就要去做修改。

2.2 明确数据域

       划分数据域的意义是便于数据的管理和应用。通常可以根据业务过程进行划分,但是一个业务过程只能属于一个数据域
       本项目中划分数据域如下:

数据域业务过程
交易域(跟交易相关的)加购、下单、取消订单、支付成功、退单、退款成功
流量域(网站的访问量)页面浏览、启动应用、动作、曝光、错误
用户域注册、登录
互动域收藏、评价
工具域优惠券领取、优惠券使用(下单)、优惠券使用(支付)

2.3 构建业务总线矩阵

       业务总线矩阵中包含维度模型所需的所有事实(业务过程)以及维度,以及各业务过程与各维度的关系。矩阵的行是一个个业务过程,矩阵的列是一个个的维度,行列的交点表示业务过程与维度的关系。
在这里插入图片描述
       一个业务过程对应维度模型中一张事务型事实表,一个维度则对应维度模型中的一张维度表(有可能某个表出现维度退化的情况,可能不会建表)。所以构建业务总线矩阵的过程就是设计维度模型的过程。但是需要注意的是,总线矩阵中通常只包含事务型事实表,另外两种类型的事实表需单独设计
       按照事务型事实表的设计流程,选择业务过程声明粒度确认维度确认事实,得到的最终的业务总线矩阵见以下表格。
在这里插入图片描述
       上图的构建过程是根据事务型事实表的构建过程,先确定一个个业务过程,然后对每个业务过程确定它的粒度,在确定相应的维度,最后是确定度量值。

2.4 明确统计指标

       明确统计指标具体的工作是,深入分析需求,构建指标体系。构建指标体系的主要意义就是指标定义标准化。所有指标的定义,都必须遵循同一套标准,这样能有效的避免指标定义存在歧义,指标定义重复等问题。
1)原子指标:
       原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标的聚合逻辑进行了定义。我们可以得出结论,原子指标包含三要素,分别是业务过程、度量值和聚合逻辑。
       总结来说,原子指标=业务过程+度量值+聚合逻辑
       例如订单总额就是一个典型的原子指标,其中的业务过程为用户下单、度量值为订单金额,聚合逻辑为sum()求和。需要注意的是原子指标只是用来辅助定义指标一个概念,通常不会对应有实际统计需求与之对应,原子指标不是需求,而是需求中的一部分
2)派生指标:
       派生指标是在原子指标的基础上产生的。
在这里插入图片描述
       派生指标一般情况下会对应实际的统计需求。
3)衍生指标:
       衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算复合而成的。例如比率、比例等类型的指标。衍生指标也会对应实际的统计需求
在这里插入图片描述
PS:粒度一般跟行相关
4)总结:
       原子指标是最基础的指标,派生指标在原子指标的基础上生成,衍生指标在派生指标的基础上生成,一个衍生指标对应多个派生指标。
       当需求比较多的时候,会出现部分统计需求对应的派生指标相同的情况。在这种情况下,可以考虑将这些公共的派生指标保存下来,目的是为了减少重复的计算。而这些公共的派生指标统一保存在数据仓库的DWS层。

2.5 维度模型设计

       维度模型的设计参照上述得到的业务总线矩阵即可。事实表存储在DWD层,维度表存储在DIM层。

2.6 汇总模型设计

       汇总模型的设计参考上述整理出的指标体系(主要是派生指标)即可。汇总表与派生指标的对应关系是,一张汇总表通常包含业务过程相同、统计周期相同、统计粒度相同的多个派生指标。
       数仓中派生指标含有业务过程、度量值、聚合逻辑、统计周期、业务限定、统计粒度这六个部分,若一个部分不同则就算另外的派生指标,如果按这样设计汇总表就会有大量的表。
       实际上,如果统计粒度相同,那么最终的结构是相同的;如果业务过程相同,那么用到的事实表是一样的,如果统计周期相同,那么用到的数据是一样的,在这三部分一样的情况下,可以将这些派生指标放在一个表中。
       汇总表和派生指标的关系:一个汇总表中有多个派生指标;
       汇总表和事实表的关系:一个汇总表有多个派生指标,但他们的业务过程是相同的,所以一个汇总表是一个事实表聚合而来的,但是不同的统计周期、不同的统计粒度会放到不同的汇总表中,因此一个事实表可能聚合到多个汇总表中。

三、各表同步策略的回顾

在这里插入图片描述
       全量表中大部分都是维度表;增量表中大部分是增量表,与事实相关的表基本采用增量同步。
       前面说了总共有三种事实表,事务型事实表:毫无疑问采用增量同步,而且必须采用基于Maxwell的增量同步,这样可以拿到包括中间状态的所有信息,DataX只能拿到最终结果,无法拿到中间过程的信息。周期快照事实表:采用全量同步。累积快照事实表:采用增量同步。
       前面说维度表也分为两类,一类是每日全量快照:采用全量同步;一类是拉链表:使用增量同步。
       上图中的cart_info放在全量里是要做周期快照事实表,定期采样每个人里面购物车有什么商品,商品有多少件;cart_info放在增量是因为对应于事务,要做一个事务型事实表。
       上图中的user_info用户表是一个维度表,要做一个拉链表,所以要采用增量同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值