00:00
呃,好了,各位同学,那咱接下来呢,就正式进入到我们的第五章啊,数据仓库的整体设计,那首先我们需要做的一件事呢,就是这个所谓的数据仓库的分层规划,OK,那这个分层到底是什么?我们为什么要对它进行分层,那接下来呢,咱们简单的来看一下啊,那首先把这段话咱先读一下,他是这么说的啊,他说优秀可靠的数仓体系需要良好的数据分层结构,合理的分层呢,能够使数据体系更加的清晰,使复杂问题得以简化。OK,那这就是分层的一个基本的意义啊,OK,好,那完之后他这说的其实不是特别的具体啊,那同学可能体会不到我这个分层到底有什么样的实际的意义,那在这儿呢,我给大家简单的说一下这个分层问题,实际上呢,这个分层的思想并不是数据仓库所独有的啊,实际上呢,在很多的这个软件啊,或者是硬件的设计当中,对不对,都会就是应用到这个分层的思想啊,就比如说举个例子,那咱们的这个计算机的这个网络因特网对吧,它是不是就会进行,它是不是就有一个分层的结构啊,对吧,但是会分为五层对吧?那最上层的是什么层,是应用层对不对?那再往下呢?
01:15
是什么层啊,不知道什么层了,不是前一层啊,应用层下面的是不是应该是那个,呃,运输层,传输层啊,对吧?在传输层下面是什么层,是不是网络层啊对吧?网层之后呢,是不是链路层对吧?那再往下呢?呃,物理层对吧?可能有同学这个不太记得啊,没关系啊,就是咱们这就只是举一个简单的例子,对吧?它这儿是不是会有一个分层的架构,那实际上还有很多这种软件啊,或者是硬件系统的设计都会有这个分层的思想,OK,那我分层之后,那它有什么好处啊,咱们就以计算机网络为例,对吧?我计算机网络我实际上从前到后是一个非常复杂的一个体系,对不对?OK,那我分层之后,我是不是可以为每一层规定一个特定特定的职责,对吧,我每一层就负责我这一层自己的一个简单的职责,对不对,然后呢,哎,我每一层是不是依赖于我的下一层啊,对吧?诶,我每或者说每一层为我的上一层提供相应的服务,提供相应的接口啊,是这样的啊,OK,那这实际上就是一个分层的一个经典的案例,对吧?OK,那对于我们这个。
02:15
数据仓库我分层,那我有什么样的好处呢?其实道理是一样的啊,就是假如说我们现在呢,我想设计一个非常复杂的一个系统,你甭管是不是咱们的数仓,还是说是另外的一个软件系统,对吧?就我想设计一个非常复杂的系统,那这个复杂的系统呢,假如说我想实现一个从零到100的这样的一个功能,对不对?OK,那好,假如说你现在呢,对整个项目没有任何的分层的规划,那你上来之后就开始写了,对不对?OK,那你每写一行代码是不是都要考虑到我这个代码对全局的这个影响啊,对吧,对不对,因为你没有任何的分层规划,对吧?你写每一行代码,你都要考虑到它对整个软件,呃,对整个系统的影响,对不对?OK,那所以说你这个人的精力是有限的,对吧,你在考虑的时候,是不是有时候可能会考虑的不是那么的周全啊,对吧?啊不是那么周全,那假如说你漏考虑一个东西,那完之后呢,你继续往下写,写写写好,那写到一半的时候发现OK完了,诶我某个功能我实现不了,实现不了的话呢,是不是可能是由于前面某些疏忽导致了,对吧?那。
03:15
这时候你可能还得返工再重写等等等等,那也就是说你如果对这个项目没有一个合理的分层规划,那你开发起来的话,这个难度是比较大的,那假如说我现在呢,先对整个项目我做一个明确的分层规划,怎么做呢?比如说我把整个项目分成这样的分层,第一层假如说我先给他完成一个零到20的功能,我再完成一个,再分一层,比如说我再来一个20~50的功能,对吧?最后呢,我再来一个50~100的一个功能,OK,好,那完之后呢,我先把这个每一层的职责先明确下来,对吧?我这一层的职责是什么?我这一层的职责是什么?我这一层的职责是什么?先把这个协议给他协定好,那协定好之后,那接下来干啥呀?我我是不是可以逐层的去开发了,对吧?好,那现在呢,我就可以把握所有的精力先只放在这个第一层上面了,我就只需要先实现一个从零到20的功能,那这个功能是不是比你从零到100要简单的多呀,对吧?OK,那这时候呢,诶我先把这一层给它实现了,好,那实现完之后。
04:15
我再把我全部的精力都放在第二层上边,20~50,对,对不对,OK,那完之后呢,我把这一层给它实现了,就完事了,OK,那完之后呢,我们再看最后一个,那我是不是再实现一个从50~100,那整个是不是就完事了呀,对吧?OK,那这样一来的话呢,就是说我们能够让自己的精力啊,就是放在更集中的一个位置啊,这样一来的话,我们开发效率会更高一些啊,这其实就是分层,这个就是一个基本的思想啊,基本的思想,那实际上咱们数仓之所以要去做这个分层,跟这个是一样的道理啊,是这样的啊好了,那接下来呢,就来看一看咱这个数仓在这儿我们到底是如何去规划这个分层的,那实际上我可以先告诉大家,就是咱现在这个数据仓库的分层规划,并不是我们自己去呃构造出来的,这个其实是借鉴了谁呢?是借鉴了之前我给大家发那本书,那本书叫什么来着,就是阿里那本大数据之路对吧?大数据之路里边我前面提到它是不是基于维度建模,又添加了一些自己的东西,是不是形成了自己的一套建模体系啊对吧?那个建模体系实际上是有一。
05:15
名字啊,叫什么名字啊,叫做one date对吧,可能有同学已经知道了啊,叫做one date体系,那这个one date的体系当中呢,就有一个自己的分层规划,那实际上它的分层规划跟咱们这儿就是一样的,或者说我们这儿就是借鉴的one类当中的分层规划,好那咱接下来呢,就来看一看这个分层规划到底是什么样的,那实际上呢,就是我们企业当中,就是外边这个企业当中,对吧,那所有的这个公司的分层规划呢,其实都或多或少的受到了这个Van net它的一个影响,有的可能跟oneate那个就是完全一样的,有的呢,可能基于oneate呢,又做了一点改进啊是,但其实差不多是一样的啊,然后呢,在这儿我需要给大家明确的一点是什么呢?就是分层规划这个东西,它不是一个就是统一的标准,不是说所有公司的主层我都是呃分成这几层,我每一层都是叫这个名字,不是这样的,对吧,那每个公司我的分层可能咱们分了这几层,对吧,人家可能分六层,可能分七层,对吧,那这每每一层的名字也不一定是固定的,哎,这一点咱们大家要给他搞。
06:15
清楚啊,这个相对是比较灵活的,好,那接下来咱就看一看我们这儿这个分层到底是怎么去做的,首先啊,呃,咱们先来熟悉一下我们这个每一层的名字都是什么,先来看名字啊,咱们从下往上看,那首先呢,我们第一层叫做什么?叫做ods对吧?这个ods是怎么来的啊,它实际上是三个英文单词的首字母对吧?哪三个英文单词看,这叫做operation date store,这个operation date是啥意思?叫做操作对吧,操作数据层对不对?OK,那这个操作数据,这个操作数据指的啥意思呢?什么叫操作数据啊,这个其实很简单,所谓的操作数据呢,其实指的就是啥啊,就是我们业务系统所产生的数据,我们就称之为操作数据,啥意思呢?就是咱们业务数据,业务业务系统我们的数据是不是有什么日志,有业务,有那个MYSQ数据库里边的数据啊,对吧?但是甭管是哪儿的数据,你琢磨琢磨那个数据是怎么产生的。
07:08
咱们以买点为例,买点日志为例,这个怎么产生?比如说一条页面浏览日志什么时候产生,是不是你在浏览一个页面的时候才会产生啊,对不对?OK,那比如说我那个业务表当中,对吧?订单表什么时候会插入一条数据,我得有人下个单,是不是才出来一条数据,对吧?也就是这些数据是不是都是我们用户再去做某些特定的业务操作的时候才会产生相应的数据啊,对吧?所以那些数据我们就称之为是操作数据啊,是这样的,OK,好,那这就是所谓的操作数据层,那至于他这儿这一层里边到底保存的是什么样的数据,它的职责到底是什么?这个一会咱们再说,我们先来简单的把每一层的名字熟悉一下啊,这是ods,咱们就过了,然后接来往上看DWD,这个DWD指的又是啥呢?来看这儿是data warehouse,是不是detail啊,对吧,是不是就是数据仓库的明细数据啊,对吧?所以在这儿呢,我们管它叫做明细数据层啊,是这样的啊好,那完了之后呢,我们继续往上看,那再往上呢,我们看这边吧,看这个这个是不是有一个DM啊,对吧,叫做公共维度层,这个DM实际上指的就是底。
08:09
这啊,就是维度的意思,好,那我们再往上看,上面这个叫什么呢?叫做DWS,这个S里面指的又是啥呢?叫做date warehouse是啥意思?是总结汇总的意思吧,没问题吧,是总结汇总的意思啊,OK,好,那也是,所以这一层我们管它叫做汇总数据层啊这样的啊,好,我们继续往上看,那还有一个叫做ADSAS叫什么呢?叫做application data service,是不是叫做数据服务层,或者叫做数据应用层也是可以的呀,对吧?好了,那这实际上呢,就是我们这个五层的名字,其实单从名字上来看啊,大家能不能看出来,你说哪层是比较重要的,或者哪几层是比较重要的,能不能看出来。实际上应该是这几层是比较重要的吧,对吧?那可能dim大家可能不太好想,但这两层你应该是能够觉得它是比较重要的,为啥它前面是不是就带了data war house啊,对吧?Data house是不是就是数据仓库的意思对不对?那其实光从名字上来看,我们大概就能推测出来,实际上呢,中间这三层,哎,DWDDMDWS是我们整个数据仓库当中最核心的三层啊,是这样的啊好,另外的两层相对比较简单,OK,好,那接下来呢,我们就继续往下进行,名字咱们熟悉了之后,我们来详细的去看一下每一层的职责是什么,因为咱们分层,每一层是不是都得有自己的职责呀,对吧?好,我们现在逐个来看,先看第一层,第一层我们称之为原始数据层,对吧?好,那么之后他这个这一层到底要做什么事呢?我们来看一下,他说ods层的职责就是存放未经处理的原始数据,然后呢,它的结构上是与原系统保持一致的,诶这个咱们怎么理解呀。
09:54
那首先我们先理解第一句啊,就是存放未经处理的原始数据,这个原始数据实际上指的是什么?指的是不是就是我们从业务系统同步过来的数据啊,对不对,那是不是就是咱们所谓的原始数据,那咱们从业务系统同步来的数据,其实那指的就是啥呀?指的就是我们业务系统是不是产生的那个所谓的操作数据啊,是这个道理吧,OK啊,所以这一层呢,你你管它叫做操作数据层也行,你管它叫做原始数据层,它也行啊,就是这个意思啊,好了,那接下来继续往下走,他说结构上得与原系统保持一致,这个结构指的是什么的结构,你要知道ods层是不是已经进have了,对吧,是不是已经开始一张一张的表了,所以这个结构实际上指的就是我们的结构表的结构呗,对吧,OK,好,那为什么odf的表的结构要跟原系统保持一致呢?这个是为什么,大家琢磨琢磨。
10:44
这个其实很好理解,大家想想啊,就是现在咱们那个所谓的原始数据,所谓的操作数据现在是在哪放,是在HDFS那个路径下放的,对吧?那将来呢,咱们需要干啥,是不是把那个路径下的文件是不是得导到咱们ods层这第一层的表里啊,对吧?好,那你想一想,我导的时候,我怎么导是怎么导是漏的吧,对吧?文件到表是不是得漏,那load在底层的操作是一个什么操作?
11:09
Load是不是就是一个单纯的移动文件的操作对吧?是不是就是从原来路径移动到这个表的路径下边对吧?好,那这个load的过程当中会改变数据的结构和数边数据的这个内容啊,会吗?根本就不会改变,它只是原封不动的给他拿过来对吧?是这样的,所以说那你想一想,你要想保证我把数据放到ods层之后,对吧,我这个表里的数据能够正确的解析出来,那你就必须得保证啥,是不是必须得保证你这个表的结构跟数据的结构得是一致的才行啊,要不然我给你扔进去,你能解析出来啊,那肯定是解析出来的,对吧?所以说我们结构上呢,就得跟原系统或者叫做跟原始数据保持一致才行,诶,那这就是ods层的一个基本的职责,那后边还有一句,他说它是数据仓库的数据准备区啊,实际上这个准备区怎么理解呢?其实很好理解啊,大家想想啊,就是我们现在数据是在HT一个路径下以文件的形式存在,对吧,那我是不是肯定至少得有一层是一个过渡层啊,对吧,我得,呃,实现一个从哪到哪的过渡呢?是不是实现一个从文。
12:09
占到表的一个过多啊对吧?好,那也就是我把数据,诶我放到第一层了,那将来我再去分析数据,我就可以怎么分析了,是不是就可以写三个了,对吧?你看那也就是ods层是一个数仓的数据的准备区,诶在这呢,我们把数据给它准备到表里边,那就完事了啊,是这样的啊,所以说实际上ods层它的职责非常简单,它就是干什么用的呢?就是保存原始数据的,然后呢,它会对数据做什么一些逻辑处理吗?会吗?并不会,对吧?Ods层只是保存原始数据,不做任何逻辑处理,诶,这就是ods层的职责,好,那接下来咱们继续往上走啊,咱们往上走,那上面一层是不是就该这个DWD层了,对吧?好,那大家想想DWD层这个数据明细层,它的职责应该是什么呢?其实很简单,我点一下大家就明白了,好,那DWD层呢,我们基于维度建模理论进行构建,它存放的是维度模型当中的是十表。
13:02
哎,是存放的事实表啊,OK好,那事实表当中我们占据绝对主要地位的表示什么来着?是事物实表对吧?所以有些情况下,可能我说事时表的时候,我指代的就是事物时表,OK,好,那接下来咱们继续,那我这存放的是不是就是维度模型当中的事实表对吧?那实表当中保存的就是什么,是不是就应该是各业务过程当中最小力度的操作记录,最小力度的操作记录,那就是什么数据?是不是就是明细数据啊,是这个道理吧,OK啊,最小力度那这样的一个操作,那就是我们所谓的明细数据,那所以说DW层存放的就是维度模型当中的一个一个的市值表,哎,这一点咱们有能搞清楚,好接下来我们继续往下走,我们看上面右边这一层叫做公共维度DM层对吧?好,那这一层它存放的应该是啥呀?应该是维度表吧,对吧?它也是基于维度建模理论进行构建,然后存放的是什么呢?是维度模型当中的维度表,OK啊,那实际上从这儿大家应该就能够体会出来我之前说的那句话了,我们说维度建模不完全等同于数仓建模,维度建模只是数仓模型当中的一部分,对吧?哎,大家现在是不是应该能看出来了,对吧?实际上呢,维度建模在我们整个数仓当中是怎么体现的,是不是这两层就相当于我们这个维度模型啊,对吧,事实加维度表啊,是这样的,你看是不是除了事实维度表之外,我们还有其他的表对吧?哎,所以这个维度模型跟整个数仓的模型这个概念。
14:28
要区分开好了,那接下来呢,我们继续往上进行,那接下来有了DWD,有了DM层了,那再往上是什么层呢?是汇总数据层,叫做DWS层,对吧?OK,那这个DWS层,那它又是怎么一回事呢?这个S是什么意思?S是汇总的意思对吧?好了,那也就是这一层它存放的应该是什么样的数据,所谓的汇总数据对吧?汇总大家是怎么理解的呀?什么叫汇总数据啊,什么叫汇总?呃,事实跟维度照应起来就叫汇总呢,并不是这样,汇总往往是跟谁相对的呢?对汇总往往是跟明细相对的,对吧?你对明细数据进行什么操作能得到汇总数据,对进行聚合是能得到汇总操作的,哎,比如说咱们这儿举一个具体的例子啊,假如说我现在呢,诶,咱们有一张下单的一张明细表,也就一张下单的市值表,那下单时表当中我会存储哪些信息啊,是不是会存储每一个下单明细记录对不对?是不是就会记录是谁,在什么时候,什么地点,是不是下单的哪个商品啊对吧?我是不是会记录一条一条的这样的明细操作记录,对吧?那这个数据我们就称之为是明细数据对吧?啊,那假如说我现在呢,需要大家对这张表的数据进行一个聚合,那聚合的时候是不是肯定是多进一出,多进一出对吧?好,那我现在把什么样的数据聚合到一起呢?我要求大家把同一个人的下单记录聚合到一起,OK,那你。
15:58
想一下你会得到一个什么样的数据。
16:00
每个人对吧,同一个人的下单记录聚合到一起,你会得到一个什么样的数据,是不是会得到每个人一共下了几次单对吧?一共下单花了一共一共花了多少钱对吧?然后下单一共下单了多少件商品,你是不是会得到一个这样的一个结果呀,对吧?好,那这样的一个结果,我们就称之为是一个什么样的结果呢?总的结果对吧?这个就是明细,你对明细聚合,那甭管你聚合到什么程度,只要是对它进行聚合了,只要是多进一出了,你得到的结果那都叫做汇总啊,都叫汇总,哎,这一点咱们大家要理解一下啊,好,那这就是所谓的汇总这个概念,行,那这个汇总数据层里放的到底是什么东西呢?来我们一起来看一下,他说汇总数据层的基于上层的指标需求,以什么分析的主题对象作为建模驱动,构建什么公共统计力度的汇总表,那可能这句话大家现在读起来呢,稍微的有点费劲,因为里边呢,是不是有太多的这个比较抽象的概念的,对吧。所以在这。
17:01
这呢,我们暂时先不去看它在这儿呢,我用具体的例子给大家说明一下这个DWS的职责到底是什么啊来各位同学,我们现在试想一个问题啊,就是假如说啊,我现在数仓已经有了DWD层了,已经有了DM层了,我现在不去构建这个所谓的DWS层,你说我现在能不能开始做各种各样的指标,能不能做,能吧,对吧?你像我们之前举了几个例子,我们是不是就是找到相应的事值表,找到维度表进行分组聚合,那就完事了,对吧?是这个道理吧?OK,那也就是实际上我们没有DWS层,那这个指标照照做不误是可以做的,那DWS层它存在的意义是什么呢?实际上我可以告诉大家,DWS层存在的意义就是为了减少重复计算,哎,这是就这就是DWS层存在的意义好了,那也就是说我们如果没有DWS层,是不是可能会有重复计算呀,对吧?来,那重复计算是什么情况下会发生呢?来看一个具体的例子,来大家琢磨琢磨,实际上我们将来呢,呃在呃呃在上边呢,我们会做各种各样的。
18:01
求,对吧,大家都知道这些需求最终的结果它肯定是一个什么值,肯定是一个聚合值对吧?没问题吧,OK,那聚合值如果我们现在没有DWS,你肯定是从哪去拿这个聚合,呃,从最开始从哪取数的,最开始是不是肯定是从明细表里边去取数,然后进行一步一步的聚合呀,对吧?好,那OK,我有些指标它可能计算逻辑比较简单,我只要怎么做呢?找到一个实时表,拿到里边的明细数据,然后呢,直接进行一个简单的聚合,对吧?比如说我格入外某个字段对吧,然后再进行一个sum聚合,对吧,我就得到了最终的结果了,OK,这是比较简单的指标,OK,那有没有可能会有一些指标会比较复杂呢?诶,我再去计算的时候呢,我需要找到一个事时表,然后呢,我需要先给它聚合到一个较高的力度啊,这个力度的概念大家应该能搞清楚吧,对吧?我是不是这一行所描述的这个信息越详细,力度就越细,对吧?描述的越粗糙,那是不是力度就越粗啊,对吧?好,那我可能需要先把这个明细表当中,因为明细表是最细力度,对吧?OK,好,那之后。
19:01
先聚合到一个较高的力度,然后呢,我再给它往上聚合到一个较高的力度,我再进行进一步的计算,然后才能得到最终的结果啊,有没有可能有这种情况呢?有,当然这个取决于什么,取决于你这个指标的计算逻辑对吧?那逻辑越复杂,我可能中间的聚合的步骤是不是就越多呀,对吧?诶是这样的,好,那现在咱们继续来走,那你想一想啊。就是当咱们将来做的这个需求多了之后,你说有没有可能会出现这样的情况呢?什么情况啊,比如说这是一个需求A,那我这儿呢,有一个需求B,需求B跟需求A呢,你会发现他俩需要用到的明细表是一样的,需要用到同一张实时表,那时候有没有可能有这种情况,肯定是有的,对吧?啊有可能出现啊好,那完之后呢,诶,它同时还聚到一个相同点,什么相同点啊,它也需要先把这张事值表聚合到一个与需求A相同的一个力度,诶也需要聚合到这样的一个力度啊,那完之后呢,我上面当然可能后边的处理逻辑就不一样了,哎,我可能直接哎再就聚合一下就得到最终的结果了,哎,有没有可能会出现这样的一个情况呢?其实你需求多了之后,也是可能会出现呢,OK,好,那既然会出现这样的一个情况,那你就会发现这里边实际上就存在什么呀,是不是就存在重复计算呀,对吧,你会发现A跟B这两个需求,他们需要对同样的一张事实表是不是先进行一次相同的。
20:23
聚合操作呀,对吧?好,那完了之后,如果说这俩需求我是分开算的,自己算自己的,那你想想是不是就是对相同的数据做了哎两遍相同的处理啊,对吧?那这不就是典型的重复计算吗?哎,是这样的,好了,那会之后咱们可以思考一个问题,我怎样做能够减少类似的重复计算,怎样做能够减少类似中计算?很简单,我其实最直接的一个想法,最朴素的一个想法就是干啥我把中间的这个计算结果我给它存起来没问题吧?OK,好,那假如说呢,我存到一个地方,那在这儿呢,我建一张表对不对?完之后呢?诶,我这个表里存的就是这俩指标需要的一个相同的中间结果,完了之后呢,我怎么做,我是不是只需要从最明晰的实表里边计算一次,然后呢,把结果存到这张表里来,然后呢,我后边这个A跟B这俩需求,我再需要这个数据的时候,我呢,直接从这个中间表里边去拿,是不是就完事了,对不对?那这样一来是不是只需要计算一次,那就能保证我后边俩需求就重复的去利用它呀,对吧?那这是不就是解。
21:23
与这种重复计算的一个最朴素的想法,没问题吧,好,那这个所谓的公用的这个中间的计算结果,我要存的话,我存哪儿呢?就存在DWS层啊这样的,所以说白了啊,这个DWS层咱们保存的就是什么,用大白话说就是啥,就是我后边的一大堆的需求的一些什么公用的中间计算结果。但想是不是这个道理对不对?OK,也就是DWS层存放的就是我们后续的各种各样的这个需求的一些公用的计算结果啊,当然不是,不是最终的计算结果,而是公应的一些什么呀,中间的计算结果,对吧?OK,也就是有一些需求呢,我再算在这儿了,哎,我可能计算步骤比较复杂,对吧,我需要先先计算一个中间结果,然后呢,再进一步的聚合得到最终的值,对吧?那我很多需求我可能需要用到相同的中间的计算结果嘛,对吧,我就把这些相同的或者说公用的这个中间的基层,我我给它保存在DWS层,哎,那就完事了,那这实际上就是DWS层它存在的意义,以及它的这个职责,哎,也就是说DWS层我没有,其实是不影响咱们做需求的,但是呢,哎,我是不是做起来的话,会有各种各样的重复计算啊,对吧,那有了它我就能够减少重复计算,提高数仓的计算性能了,哎,就是这么个逻辑,这就是DWS层存在的意义,好,那现在DWS层呢,我们就先理解到这个程度就可以了啊好了,那接下来咱们再继续往上。
22:47
类型我们看最后一层啊,最后一层我们称之为ADS对吧,这一层其实相对来就比较简单的,它是存什么的呀,存放各项指标的最终结果的吧,对不对,OK啊,那ADS层的实际上就没有什么建模需要去考虑了,Ad层就比较简单了,是不是我后续的数仓,数仓后续是各种各样的应用了,对吧,那这些应用它需要什么数据,那我就哎在ADS层是不是给他存什么结果就完事了,对不对?那所以ADS层相对来说是比较简单的啊,OK,那到目前为止呢,那咱这个数据仓库的分层规划就算是讲完了,OK啊,那现在呢,大家只需要对每一层它的这个名字,包括每一层的职责有一个初步的这个了解就够了,那后续呢,我们会逐层的去搭建这个主仓,我们搭到哪一层的时候,那大家呢,再详细的去考虑哪一层的这个职责,现在有一个初步的认识就行了,好那现在呢,我们总结一下啊,那我们这儿呢,一共分为这样的五层,对吧?Ods层它的职责是什么来着,保存原始数据,不做任何处理对吧?好,那之后呢,我们需要怎么呢?是需要在DWD层去构建。
23:47
维度模型当中的事实表啊,对不对,你需要在DWD区间一张一张的实时表,诶,那我现在问一下大家,你说事实表的数据来自于哪一层。来自于ods层啊,是不是这个道理,你得从ods层是不是选择哎,跟事实相关的那几张表的数据啊,对吧?然后处理完之后是不是放到我们这个DWD层的每张师表当中对不对?OK,那DM层呢,放的是,哎,是不是维度模型当中的维度表,对吧?那维度表的数据来自于哪呢?哎,实际上是来自于也是ods层对吧?那从ODS层找到与维度相关的一些表,然后呢,是不是进行相应的处理,写到DDM层的每一张维度表里,对吧?OK,那接下来再往上是不是就该DWS了?DWS放的是什么来着?是一些汇总结果,对吧?OK,好,那这些汇总结果其实说白了是什么呢?是我们各种指标的一些公用的中间的计算结果吧,对不对?OK,那咱把那些东西都放在DW,那我问一下大家,DWS它的数据来自于哪?其实应该是来自于DLD吧,对不对,主要是来自于DWD吧,为什么呀?很简单,因为汇总,汇总你是不是就是由明细聚合而来的,对不对?那所以实际上呢,DWS的数据大多数都是来自于DWD这一点。
24:57
大家给它搞清楚好,再往上找ADSADS就是最终的计算结果了,对吧?那你说这个最终的计算结果咱们来自于哪?这个其实相对比较灵活,绝大多数的来自于哪呢?DWSDWS,然后呢,是不是可能有一些是直接来自于DWD,也有可能啊,对吧?是这样的,这一点大家给他搞清楚好了,各位同学,那实际上这实际上就是咱们整个数据仓库的一个分层规划,哎,从这应该能看出来,就是说我们每一层从下到上是不是相互依赖的,对吧?是不是上一这个第二层是依赖于第一层,然后第三层依赖于第二层,对吧?它是有这个前后的依赖关系,这个大家给他搞清楚好了,那完之后还有一个小细节大家需要注意到,大家来看一看,就是我这个分层的颜色啊,我这个图的颜色我从下到上是不是逐渐变浅的呀,对吧,但是我这个颜色的深浅在这儿我想表达的意思是什么?哎,对,是数据量,没错啊,确实这样的颜色越深就表明我这个数据量是越大的,那越往上越浅,是不是数据量越来越少啊,对吧,为什么是这样的,再琢磨琢磨为什么首首先第一个,那我们ods。
25:57
是不是有原始数据啊,对吧,原始数据是不是有各种各样的,比如说脏数据啊,乱七八糟的数据啊,对吧?OK,好,那完之后我再把原始数据往上面的,比如说明细表进行这个,呃,这个装载的时候,那咱们需要对对对数据进行一个什么操作,你需要解析数据,需要清洗数据,对不对?那这个数据呢,是不是会有所减少对不对?OK,那再继续往上走,你从明细再往DWS,你需要做一个什么操作来着,汇总对不对?做什么叫汇总,汇总叫聚合,对吧?多进一出,你进来多行,出来一行,你的数据是不是肯定会变小对吧?所以说那从这到上数量也是变小的,OK,那我从DWS再往上到ADS,其实还是一个什么呀。
26:36
还是一个汇总的过程,对不对,那相当于我从明细到DWS是汇总到了一个中间的一个程度,对吧,那我从DWS到ADS是不是汇总到了一个最终的一个结果程度啊,对吧?是这样的,所以说诶又是汇总,那所以说数据量会进一步的变形,也是从下到上,咱们的数据量呢,是逐层诶减少的,这一点大家应该也是能想明白的啊好了,那到目前为止数据仓库的分层规划咱就说完了啊来,我把视频停一下。
我来说两句