00:01
好,那现在我们把前面这个讲的东西,这个简单的总结一下,大家现在也做了这个书藏项目呢,也做了,呃,有一周多的时间了,对吧,应该也有一周多的时间了,呃,然后可能大家已经已经很累了啊,其实做这个数仓的这个过程呢,其实是一个痛并快乐着的过程。对吧,你写这些circle感觉很痛苦,但你写出来之后呢,又感觉很爽是吧?应该是这样的一个过程啊。呃,那我们现在把前面东西呢,简单总结一下,呃,咱这个数仓啊,大家要注意整个数仓项目当中,我们最重要的两部,呃,内容呢,大致有这样的两部分啊,可以分为这样两部分,哪两部分是比较重要的呢?第一个是咱们这个数仓的架构。第一个是书仓的架构,那这个书仓的架构里边包含什么东西呢?包含咱们前面的这个数据采集平台,呃包括呃用户行为日志,包括业务数据这两部分,呃,这个采集平台,这是我们架构当中的一部分,然后还有一部分是什么呢?是咱们数仓,也就是have里边我们这个,诶分层建模。
01:10
这是咱们这个架构呃的两部分内容,架构的两部分内容啊,一会咱们再去说它,那后边还有一部分比较重要的内容是什么呢?就是咱们今天要不是不是今天啊,就是今天开始,今天开始要做的这几个需求,也就是我们这个ADS层我们要做的这些需求。这是呃,咱这个收藏当中的两这个两个最重要的部分,最重要的部分啊,那我们现在来回顾一下咱们前面的第一部分啊,因为后边需求咱还没做呢啊,咱先不说它,咱们回顾一下前边这个第一部分,也就是我们是个数仓架构当中比较重要的内容。首先我们来回顾这个我们的采集平台,那采集平台里边呢,呃,咱们分为两种这个数据来源对吧?一种是呃日志用户行为日志,还有一个呢是呃咱们的这个呃业务数据,对吧?那对于日志我们的采集平台是什么样的,这个大家自己得心里特别清楚才对,对不对?那对于日志来说,我们是不是用flu去采集咱们的日志啊,对吧?那采集日志的时候,我们需要想到一个问题,什么问题呢?因为咱们所有的这个用户行为日志,我们大致可以分为这样的两类啊,一种是启动日志,一种事件日志,对吧?我们往日志服务器去发送的时候,其实是不是全是混杂在一起的呀?
02:27
对不对,全是混杂在一起的,所以说我们在采集的过程当中呢,我们需要考虑一个问题,什么问题啊,我们需要对日志呢进行分类,你需要给它分开,那我们分的时候咱们是怎么做的,咱是不是用的是呃拦截器去配合这个,呃,Multipl channel选择器是不是配合他们两个去是去进行这个日志的分类啊对吧?这个大家得能够记忆起来,这是咱们这边一个日志的采集,采集完之后呢,我们把数据呢给他,诶发送到了这个卡夫卡,做了一个这个消峰缓存,对不对啊,这是卡夫卡,当然就是外边呢,有些公司呢,呃,也可能这边不用这个卡夫卡怎么办呢?他直接使用将数据对接到HTS上,也可以这么去做,那这边呢,我们加了一层卡夫卡做做这个数据的缓存,那后边呢,后边我们是不是又来了一个flu消费卡不卡数据,然后把数据呢,放到HDFS上。
03:21
对不对,这是咱们的日志采集,日志采集啊。拿回,那对于我们下边的那个呃业务数据的采集呢,它是不是相对来说要呃简单一些呀,那我们的呃业务数据我们采集是使用的这个scoop用scoop,那提到scoop呢,大家呃知道scoop的基本原理就可以了,我们scoop基本原理是什么呀。Scoop的基本原理就是map reduce,它底层就是map map reduce啊,就是我导一次数据,实际上呢,我在这个底层就跑了一个MR。其实就是这个东西啊,那这个scoop的这个MR呢,它而且它是那个只有map的MR,就是没有reduce,只有M,只有map,只有map啊,那因为为什么呢?因为咱们这个scoop呢,它是一个什么东西,它只是一个数据的传输工具,它里边呢,是没有这个复杂的业务逻辑的,对吧?而且我们呢,也不要在里边放上复杂的业务逻辑,因为大家要要要把握这个库的定位,它不是分析引擎,它只是一个什么东西,只是一个数据的传输这样的一个工具。
04:29
对吧,那数据的分析呢,你要放到哪,放到里边再去进行,是这样的啊,所以说这个scoop虽说它底层是MR,但是它不负责计算,是没有逻辑的,只是为了读数据,为了传数据。那这个scoop的MR,它其实呃,对,只是做了什么做做了什么事呢?其实这样的我们scoop呢,只是对scoop,我们scoop呢,只是对呃,MR的这个input format以及output做了这个自定义。这个大家应该能想到对吧,因为我们scoop读数据要从哪去读啊,要从诶my circleq去读,当然这这指的是什么?这指的是从my circleq或者是关型数据库往咱们这个HT传的时候啊,指的是这时候,那这时候我要去读关型数据库的数据,写呢要往HT上写,那这时候呢,其实自定义了这个input和out。
05:21
这是咱们SCO的这个基本的一个原理,这个大家简单了解一下就行,OK,那这是简单的回顾了一下咱们的这个日志的和业务数据的采集平台,对吧?那这个对于架构来说呢,咱们后边数仓里边是不是有这样的分层架构啊,对吧?那么分为五层,呃,大家要大家要要要那个有一个这样的一个一个什么呀,一个定位就是咱们这个,呃,数仓的分层呢,这不是一个这个固定的模式。不是一个固定模式,不是说我我去了之后啊,我我去之后每每家公司,哎,我们这个分层都是这么区分的,那都分五层,哎然后呢,每一层都叫什么OD s DW dws。
06:02
不是这样的啊,这个每个公司数仓分几层,到现在呢,是没有这个统一的,这个统一是没有统一的啊,就是每个公司可能都不一样,可能有的公司可能分五层,有的可能分四层,对吧,有的甚至可能还更多。是这样的啊,所以说大家要知道咱们现在这个分层这个概念什么样的,其次呢,每一层的名字,诶,每个公司它叫的也不一样,哎,咱这个项目当中我们叫ods,叫DWD,但其他公司呢,可能他不这么叫,可能不这么叫啊,这只是一个名字而已,是这样,大家要把这个东西要理解清楚,呃,所以说每个公司它分层,分的层数以及分的这个,以及每层的名字不一样,但大致什么呢?大致我们这个就是说每一层干什么事呢,其实还是差不太多的。其实差不多啊,可能只是名字不一样而已。这个是我们现在一个分层的一个现状啊。好,那现在我们来回顾一下,咱们数层当中分的这五层分别是什么啊,来咱们先看第一层ods层,那ods层呢,我们这边前面讲过是吧,咱们这一层干什么事啊,就是说诶是不是就是保留咱们前面的原始数据不做任何处理,诶这是这一点是不是啊,那后边到了DWD呢。
07:15
DWD呢?我数据来源是哪,数据来源呢,是ods层。对吧,那我在数据从ods往咱们的DWD导的时候,咱们要进行什么东西啊,要进行什么数据清洗啊,要去进行这个脱敏啊等等等这些工作是吧?诶咱们不考虑这些事,我们考虑什么东西,我们考虑咱们这个建模,咱们考虑建模,因为建模是咱们这呃非常重要的一个点啊,也是我们在DWD层呢,我们要进行什么建模要进行。维度建模吧,对不对,那这个维度建模呢,是大家这个必须掌握的这个知识点,维度建模是大家必须掌握的知识点,这边是非常非常重要的啊,这个不论是大家以后呃自己去开发,还是说以后去那个找工作的时候去面试这块呢都是。
08:05
非常重要的知识点。都是非常重要的知识点啊,那所以说我们一起来回顾一下维度建模它的这个这个知识点都有哪些啊,那维度建模呢?呃,我们分为这样的四步,我们有一个维度建模四部曲,大家不知道还能不能想起来啊,维度建模四部曲哪四部来着?第一步是不是确认什么呀,选择业务过程吧,对吧,那这个选择业务过程实际上在是实际上是在确定什么东西啊。实际上是在确定什么东西,实际上其实是在确定咱们这个维度模型当中,哎,我有哪些事实表。实际上是在确定这个东西啊,因为咱们维度模型当中是不是有两类表啊,一类叫实时表,一类叫维度表,那第一步选择业务过程,实际上就是在确定我们需要建立哪些事实表。建两时表啊,那这个呃,我们的实时表呢,实际上跟谁对应的,是不是跟业务过程对应,一个业务过程我需要对应一个实时表,一个业务过程对应一个实时表,对不对啊,那咱们电商当中典型的业务过程会有什么呢?其实大家比较熟悉,虽然可能同学没有参与过这个电商系统的开发,但你是不是在那个电商平台上面买过东西啊,这个整个的业务流程其实大家都都体验过,对吧?那咱们典型的业务过程有什么呢?比如说咱们这个下单。
09:29
再比如说什么,再比如说支付,再比如说这个这个什么东西啊,这个加购物车对吧,再比如说这个退款,再比如说这个这个评论对不对等等等等各种各样的,这都是典型的这个业务过程,那每个业务过程,呃,我一般就是对应一个一张实时表,一个过程对应一张实时表。是这样的啊,然后大家确定完这个实时表之后呢,下一步该干什么了。选择业务过程下一步干什么,是不是确定力度啊,或者是叫做声明力度,这个声明力度声明谁的力度,这个得搞清楚声明谁力度,是不是应该是声明咱们刚才选出来的这些事实表的力度啊,对吧,你要去声明,诶我每一张实表的力度是什么?所谓的力度呢?指的是什么力度是不是就指的是,诶你这一张实表当中,我这一行数据,它所描述的这个事实是什么?
10:23
比如说那对于这个支付来说,我支付表当中一行数据,我描述的就是一个支付记录。对不对,那对于加购物车来说呢,我加购购物车,它对应的111行记录是什么,是不是就是我加购物车的一个这样的一个行为啊,对不对,这就是说去声明咱们这个力度,就是说你这个表里边的一行数据,诶,我应该指代的是咱们什么样的一个事实。把这个事儿明确下来,那咱们去明力度的时候呢,有一个原则,有一个原则,这个原则是什么,不知道大家还记不记得啊,声明力度的时候,我们的原则是什么东西,回顾一下什么东西。
11:01
是不是应该是选用这个最小力度啊。最小力度啊,一定得是最小力度,一定得是最小力度啊,大家把这个点记度,那为什么一定要选择最小力度呢?一定要选择最小力度呢?因为最小力度相当于什么?最小力度相当于是我最原始的数据。最原始的数据对不对啊,每行数据对应用户的一个,诶,原子性的一个操作,这是一个最原始的数据,那你想一想,我有了最原始的数据,我后期是不是做任何程度的这个分析,任何程度的这个聚合,我是不是都能都能做出来呀,因为咱们这有原始数据嘛,对不对?哎,其实这是我们声明最小力度这个原因。因为你有原始数据,所以说我后续无论什么样的需求,我都能从这个原始数据当中去拿,是这样的啊,这是咱们要记住这块,咱们维度建模当中第二步要干的事就是生命力度,选择最小力度,那OK,我们再来讲这个第三步,第三步该干什么了?第三步是不是应该是确认维度啊,对不对?那所谓的确认维度指的是什么呢?
12:07
咱现在啊,已经有了,我要建哪些时表,这个东西咱已经确定了,对不对,然后呢,我也已经确定好,咱每张表它的力度是什么了,那接下来要干什么了。接下来其实是确定咱们每一张事实表应该关联哪些维度,对吧?这是我们选择维度,选择维度啊,那你想一想啊,咱们现在这个实时表,实时表里边有什么,有什么样的字段,我们实时表呢,大致可以分为这样的两类字段,一类字段呢,我们管它叫什么呀,叫做维度外建,就是基本上就是各种ID对不对,这是实时表当中啊各种ID,比如说什么user ID,商品ID,地区ID,实践ID对不对,这是咱们一张实表,那还有一一类字段是什么呢?还有一段是它的度量值。度量值,这个度量值呢,我们又管它叫做什么东西,度量值是不是咱们又管它叫做那个所谓的事实啊,Fact事实,就咱们那个事实表当中的两类字段啊,那OK,那接下来我们要干的是什么?接下来我们要干的事就是确认咱们这个事实表当中这些维度外建应该有哪些,其实这是我们第三步确认维度要干的这个实际的事儿啊,就是这个事好,那现在呢,比如说咱们怎么去做呀,我们呢,会画一个这个所谓的一个业务总线,对不对,那这个在这呢,我们会,呃,通常画一个表格,那这个这边呢,我们在这列出来我所有的业务过程。
13:27
然后呢,右边把我们后续后续啊,我们可能会分析问题的这个所有维度全部列出来,可能我后期呢,我会按照商品去分析,会按照这个用户去分析,会按照地区分区,按照时间分析,对不对,各种各样的,我会按照他们这些维度去分析,那你就把这些所有的维度都列在这儿,都列在这,然后我们逐一的去确定,诶,每个实时表跟哪些维度相关,比如说对于订单来说,我可能跟用户相关,可能跟时间相关,可能跟地区相关。
14:00
对不对,那对于对于其他退款来说呢,可能对,比如退款啊,跟用户相关,跟时间相关,跟商品相关对不对,那跟谁相关,你就打上对友的勾,打完勾之后呢,那其实你就相当于确定了每张事实表我应该有哪些外键了,对不对,你是不是一打上勾的就说明你这呢有一个对应的ID,打上勾的就说明有一个对应的ID。这个应该是大家应该都清楚对不对,这是我们第三步确认每一张事实表的维度。好,那确认完维度之后,我们剩下最后一步了。最后一步是什么?是不是确认事实啊,所谓的事实在这这个事实指的是什么?不是确认事实表了,我们事实表有哪些已经确定下来了,我们现在确认的是什么东西,我们现在确认的应该是那个度量字段。对吧,因为咱事实表呢,分为这样两类嘛,一类是I did字段,一类的是什么,是这个是那个度量值,那现在咱们这个所谓的确认事实呢,实际上确认的是每一个事实表里边,它的度量字段应该是什么,因为每个事实表的度量字段是不一样的,那比如说对于下单来说,那下单来说我可能有什么呀,有下单金额。
15:08
对不对,那对于咱们这个支付来说,也有一个支付金额,对于退款来说呢,我可能有退款件数,有退款金额,对不对,那对于我们这个收藏来说呢,诶对于收藏来说,我是不是没有一个明显的度量字段啊,对不对,我收藏这个商品,难道我要说我收藏了多少钱吗?对不对,是不是没有这样的这个指标啊,所以说那对于收藏这种没有事实的这个事实表怎么来,呃来说咱们怎么办呢?那OK,他的度量值呢,其实就是那个次数了。就是我们后期去分析这个收藏的时候呢,我们可能更多的分析的就是它的count。对不对,这就是他的度量值。这是咱们最后一步啊,就是说维度建模的最后一步,就是如何去确认这个事实,确认事实,所谓的确认事实,就是确定每一个实时表,我的度量字段有哪些。啊,好,那到这一步为止,大家来想一想,你看咱们这个维度建模是不是就已经完成了,基本上已经完成了,因为什么呢?我已经确定了我有哪些实实表了,我也确定了每张事实表里边有哪些维度,外界有哪些度量值,都确定下来,那OK,这个事实表呢,你现在其实就已经规划完成了,规划完成了,那实时表完成之后,剩下我们要干什么,剩下咱是不是应该是呃,去设计咱们的维度表吧。
16:27
对吧,因为咱们维度建模两类,一类实时表,一类维度表,那我们做维度表的时候,我们的原则是什么呢。维度表的原则是什么?因为刚才咱们有哪些维度表是不是已经确定了,比如说什么商品啊,呃,这个什么用户啊等等已经确定了,那我们建维度表我们的原则是什么?原则就是说你需要把业务系统当中,比如说跟商品相关的这些表全部干什么,全部给他,诶汇并到合并到一张商品维度表里。对不对,这个过程我们管叫什么呢?叫做这个所谓的维度退化对不对,就是把因为咱们在关系模型当中,我们建模的时候,我们是要遵循这个三范式的,既然要遵循三范式,那可能这个表结构呢就比较复杂,对不对?那这边我们要转化成维度模型,那就需要将咱们这些和某一个维度相关的所有表全部合并到一张表里。
17:20
对于商品来说,我可能有商品表,有品类表,有品牌表。对不对,那你需要把这些东西合并,合并到医疗商品维度,那对于这个这个比如说地区表,那我可能有一个地区,有一个省份,那这俩呢,你也要合并,对不对,这是我们,诶对维度表我们需要做的工作,好那把这些工作做完之后,那我们的维度建模就结束了,事实表咱们OK了,维度表咱也OK了,这就是我们维度建模的整个的一个过程。整个的一个过程啊,这个过程呢,大家一定得熟悉才行。你得说,而且一定要得理解才可以。得理解,什么叫理解,这个要说咱们这个维度建模这四步让大家去背,你肯定能背下来,就是肯定得背下来,但是你要知道啊,你背下来和人家去说,以及呃和和什么呢,和你自己理解的去和别人说,那个效果他是不一样的,咱们是能听出来的,对不对啊,所以说大家一定要把它理解,一定要理解OK,这是咱们这个维度建模,好,那维度建模之后,那剩下我们该干什么了,剩下是不是咱们还有什么DWSDWS和DWT啊。
18:31
对不对,大家要注,大家要知道啊,我们的DWT以及DWS层这两层它和什么,它和维度建模是没有任何关系的。我们维度建模在DWD就结束了,事实加维度表就完事了,DWS层和DWT层的和维度是没有关系的,是没有关系的,大家把这点先记住,然后呢,我们再来明确一个点儿,明确一个什么点呢?大家说我们的数仓啊,如果说做到了DWD层。
19:01
做到了维度建模这一层,那你说我后续如果不做这个DWS和DWT不做这两层,那你说我做后边的需求,我能不能做?完全可以,大家要知道我们DWS层存的是什么数据,存的是不是明细数据啊,咱们DWS层,DWT层的全称是什么?DDWD啊,DLD全称是什么?是不是data warhouse,然后detail啊,Detail什么意思?就是明细细节的意思,比如咱DW存的是最明细的数据,你有最明细的数据,你做任何需求你都能做。你把这个点得记住啊,最明细的数据你有,你后续做什么需求都能做,那咱们DS和DWT我的这个我什么东西啊,我的这个意义是什么呢?咱们这这两层的意义是什么呢。大家要知道咱们这两层的主要意义是什么?是这样的啊,咱们DWS和DWT层呢,我们主要的意义有这样的几点,首先第一点呢。
20:03
就是说他能够帮我们干什么,能够帮我们把这个呃数仓的这个呃模型进行呃相应的一些简化,相应的一些简化,因为咱们可能维度模型虽说要比关系模型要简要要要简单很多,那实际上呢,如果说表比较多,事实加维度可能比较多的话,那其实这个表结构也相当来说也比较复杂,那可能我们后续开发人去做需求的时候呢,我可能我并不是很容易就能确定我应该从哪张表里去查数据。对不对啊,哎,是这样的,那我们有了这个后边DWSDWT之后呢,我们再做需求,可能会这个思路可能会更顺畅一些,可能会更容易一些,这是为什么呢?大家想想啊,我们DWSDWT,我们建模的时候怎么建的,我们是按照主题去建的。按照主题,这个所谓的主题跟谁对应呢?咱们叫主题对应,按照主题建模,大家要知道啊,咱们这个DWSDWT,我们这个所谓的主题是和谁对应的。
21:05
是和谁对应的?这个问题呢,大家可以回答一下啊,我我瞅瞅大家这个对咱们这个书上的这个建模理解的深不深啊,那后边DWSDWT大家都做完了对吧,那你说咱们这个主题是和谁对应的。是和谁对应的?大家可以回答一下这个问题啊。诶对诶对,可以啊,看来大家掌握的还是都都都比较这个不错的啊对,我们建模的主题呢,适合咱们的维度对应的,是和维度对应的,大家想一想啊,我们这个呃,既然确定了我呃跟维度对应,那你跟维对应,也就是说我能够确定下来咱们DWS和DWT呢,应该有哪些主题。对不对,也就是咱们只是确定了应该有哪些表了,对不对,那每一个主题表里边我的字段应该有什么。这个东西应该是跟谁对应的。每个主题表里的字段应该有什么,是跟谁对应的,是不是应该是跟咱们维度模型当中那个事实对应的呀,对不对,那我这边相当于是干什么,我相当于啊是这么去做了,我把咱们维度模型当中,比如说咱们举一个例子啊,比如说这个是我的用户主题画面,用户主题画面我只是相当于什么呀,我相当于把这个事实维度模型当中跟用户相关的所有的事实,哎,我统一的给他,诶放到了一张表里。
22:31
跟用户相关的事实,我统一的放到这张表里,也就是说咱们诶为这个主题宽表当中,我的字段应该是怎么样,应该是跟这个主题对象相关的各种事实。哎,我给他,我给他进行统计。是这样的,就是咱们怎么去确定咱们DWS以及DWT的主题,以及如何去确定每一个主题宽表里边应该有哪些字段,是这样的,那你想你有了这样的主题宽表之后,那你再去分析这个数据的时候,那是不是相对来说就容易很多了呀?比如说我后续来一个需求,我想去分析跟用户相关的这一些一些指标,比如说这个用户当天下单多少,当天支付多少,对不对,我想分析这些东西,那这个从哪去哪,你是不是就不用再去考虑,诶我应该从哪个实时表,哪个维度表取数据,是不是不用考虑这个事儿了,你从哪拿就行了,是不是直接从用户主的宽表里拿就行了呀?
23:20
对不对,那这个其实是能够简化咱这个数仓的一个模型,大家后续诶去开发的时候,去做需求的时候呢,我会更更快一些,更容易一些,这是咱们这个主题宽表它的第一层意思,第一层这个作用啊,第一个意义也就是说能够简化咱这个模型,诶能够加快咱们后续的开发,这是第一点,那这个第二点是什么呢?第二点,咱这个宽表还有什么作用?还有什么作用,其实呢,它另一个作用就是它能够干什么呀,能够诶重复的呃去利用我们的中间数据,它能够重复的利用我们的中间数据,那我现在比如说给大家举一个简单的例子啊,比如说我现在呢,有什么东西,现在呢,我有几个需求,嗯,那这而且现在呢,我比如说是没有这个DWS和DWT没有这个宽表层的,它没有它没有它,那也就说我所有的需求是不是都得去DWT去出啊。
24:12
对吧,那可能呢,我有一个需求,OK,那这个需求呢,比如说是跟用户相关的这个需求,跟用户相关的需求,那OK,我这时候得去DWDWDWD去拿数据,因为咱没有宽面层嘛,去那拿OK,我算完了,算完之后,算完之后呢,我可能又来了一个跟用户相关的需求。那这时候你还怎么,你是不是还得去从DWD拿数据,然后进行计算啊,对不对,但其实这两个需求,我可能我中间的某一个子查询,可能其实他们的数据都是一样的。那既然是一样的话,那你这边是不是相当于你计算了两遍啊,对不对,那我可能还会有更多的需求,他们的中间数据呢,可能都一样,对不对,那就相当于你每次都要重复计算一下,每次都要重复计算一次,对不对,但是呢,我们如果说有了这个中间的这个宽表,咱们如果说有了中间的宽表,那它就不一样了,对不对,OK,我宽表呢,我给它摆在这儿了。
25:07
对不对,那后续所有跟用户相关的需求,我是不是都从宽表里直接出就行了,都从那出,但是大家想一想,我从DWD到宽表,我是不是只计算了一次啊。对,咱只结算了一次,那这样一来就是说能够来重复利用咱们的这个中间层,这个宽表层的这个数据,能够减少咱们的计算量。这是咱们这个DWS以及DWT,咱们这个宽表的第二一个重要的一个意义是这样的,一是简化咱们这个呃表的模型,就是进一步简化表的模型,二一个呢,就是能够重复利用这个中间数据。OK,那这个大致就是咱们这个宽表层,它的这个意义了,它的意义了,那这个我们宽表呢,咱们这分了两层,一一层呢,是咱们的呃DWS,我们DWS呢,我们基本上做的都是天表,都是分区表,就是说我把这个每个呃主题对象,它一天或者是当天的行为放在当天的分区里,放当当天的分区里,诶是这样的一个一个构建,那后边呢,我们还有什么东西啊,还有一个主题层DWT,那DWT呢,我们是一个什么样的表呢?我们是一个全量的表。
26:15
什么叫做全量啊,大家这个得搞清楚,所谓的全量呢,就是说比如说对于用户主题来说,那OK,我DWT的主题宽表里,我应该就存放着所有用户,所有这个用户的信息,那对于商品主题来说呢,那我在DWT这个表里呢,就要有全部商品的这个信息。这种DWT全量表,那OK,那咱们什么时候去使用DWS,什么时候去使用DWT呢?这个大家得搞清楚,大家得搞清楚啊。大家知道咱们DWS层是不是里边存的是我们每一天的数据,我们是不是都有记录,咱们每一天的数据都有记录。对吧,每一天的数据都有记录,但是到了DWT呢,我们只存了哪些数据啊,我们DWT呢,可能只存了一个咱们用户的一个累积结果,比如说有什么,比如说嗯,就是每一个主题对象的累积数据啊,比如说有什么呢?可能有这个最近30天的对不对,可能还会有什么累积的各种各种值。
27:14
对不对,诶等等等,可能会有这一些这些统计指标,那比如说我们后续有一个需求,比如说我要求咱们每一个这个用户,或者每一个商品,我当天的这个各种指标,当天怎么怎么样,当天怎么怎么样,那这时候你如果说诶你在DWT里是不是就没有现成的值了呀,因为我们在DWT更多都是以累积值,比如说最这个呃什么呀,最近30天,最近15天或者什么从头到尾累积多少多少多少,对不对,可能更多的是一个这样的一个累积值,那我可能要求对当天的各种指标的时候呢,你这时候还得去哪去查呀,是不是还得应该去从咱们的DWS去查呀。对不对,因为DWS里存的是每天的这个明细的数据,每天明细数据啊是这样的,那OK,这个就是咱们DWS和DWT这两层,这两层它的意义,以及这两层它的一个区别,DWS是天表,DWT呢是一个累积的全量表,累积的全量表,好,那这个咱们简单的就把咱们现在前边大家学的这样的四层就给大家捋了一遍啊,给家捋了一遍,就是可能大家现在前面对于咱们四层这一大堆的circle口,你可能有的同学还没有敲出来。
28:24
没关系啊,没关系,这个就是说大家呃,如果说能把咱们这个数仓的整个的这个呃架构以及整个的建模思想能够给他理解了,那就非常不错了,至至至于circle这个东西呢,你这个急不得,你没法急啊,就这这东西啊,就是你只能是练这个东西,没有谁说是天生就会写circle,对不对,你只能是练,大量的练习越来越熟,是这样啊,就是咱们circle呢,可能呃,可能有少部分人可能有天赋啊,对吧,可能真的就是生下来就会写circle。呃,但是更多的还是凭经验,就是我们练的越多,那大家经验越丰富,这个S呢,你写的就越溜,是这样的啊,就是这个东西没有什么捷径,就是练习,多练多练就行了啊。
29:05
好呃,那这个我们简单的回顾完之后呢,那一会儿我们再给大家一点时间,让大家去把这个前面没有做完的这个东西呢,给它补上,补上之后,那下下来我们就开始去做这个需求了,下来就开始做需求了,好,那现在把这个视频录一下啊。
我来说两句