00:00
呃,之后呢,来到了这个DWS层,DWS叫house service。相当于是服务层,服务层呢,这里面呢,是按天进行汇总聚合。什么叫按天呢?按天聚合成宽表,这里面记住的信息,比如说以用户行为宽表为例啊。他记录的是这个用户这一天。他干了哪些事儿?比如说一天的下单次数是几个?一天的浏览次数是多少?一天的收藏次数?对吧,啊,一天的这个支付了多少钱。还有这一天的这个点赞次数。评价次数。它属于按天的一个实数,那你像你在DWD层呢,是它一条,比如说下达了一次,那就来了一条,对不对,你看下达了一次,我就来一条,再下达一次,再来一条,再下来一次,再来一条,那到我这个用户行为宽表里面就是这一天。我咔靠他一下一共有多少条,比如这三条。呃,是这样的一个区别哈,也就是说这块呢,呃,它是对前面DWD层的一个轻度聚合。
01:02
那这里面存的是天的信息,那再往下呢,这块呢是DWT。叫data warehouse topic,也叫主题方面啊,也就主题城。它呢是对这个主题呢进行汇总,比如说还是一个下单为例,你刚才现在这个DWS啊DWS它是按天进行汇总了,这个用户这一天下了多少单,那DWT干嘛的呢?DWT他汇总的是这个用户还是下单哈。从开始创建,比如说十天啊,一年前吧,一年前创建的,一直到今天。他一共累计下单多少次?那这样吧,如果中间是180天,那你需要做的事就是对DWS这个下单这个次数进行一个抗。那假如说你这个每天三单一百80天,那就600什么24啊,六百五百四吧。五百四是吧,假如说啊543。
02:02
或者说你700单也没问题啊,因为这不是一个均值。它相当于是这个总体的一个累加,从用户创建一直到现在的一个累积,那这呢是这个用户这一天的一个累积。啊,那DWD层呢,是一条一条的信息。啊,这几个力度啊,这叫不同的力度,也说这个力度呢是一条,那这个力度呢是一天,我这个力度呢是多天啊,也就说整整体一个全周期。好。那后面呢,这个ADAD层呢叫application date应用成的数据的一个存储,那这就是纯的一个报表指标了。啊,存在一个报表哈,也就是说用户呢,这个老板关心说今天。这个日活是多少,或者今天的交易额是多少,那你可以从这个DWS这个表里面直接出相应的指标。那如果老板现在关心的是这个像啊这个用户到现在他一共下了多少单呢?啊这种累计型的这指标你可以从DWT出。
03:01
也就是说这个ad成这个解标这个指标啊,你可以从DWS里面去运算,也可以从DWT里面运算,但是很少有人去从这个DWD。去出相应的指标啊,这块注意啊,很少有人从DWD出,要出的话都是从DWS和DWT。啊,这块呢,要要理清楚相应的关系,那这里面就是具体的一个报表关系哈,那稍微回顾一下也是ODI上保持数据源报不做任何修改,主要起到了一个备份作用,那么DWD呢,主要呢是保持跟ods力度一样,比如说没有对它进行一个力度的一个变化啊,还是保持的是最小力度哈,那对ODI层的数据呢,主要是进行一些清洗啊,那后面呢,我们还会会说到一些维度退化哈,那是建模相关的一些要求了。之后呢DWS层,DWS层呢,它是按天进行集合,所以这一天这个用户下单次数,支付次数,浏览次数,这个消费金额等等,那DWT呢,是这个用户从创建一直到当前这一时刻,他的一些累积行为。
04:06
就是累积的下单次数,累积的交易金额等等哈,之后呢ADS,那ADS呢,就是老板关心哪些报表。关心哪些报表,那你就预算哪些报表,那你从哪里面去拿数据呢?你可以DWS里面按T去拿,也可以从DWT里面去拿一些这个累积的一些指标,这两个都可以去出相应的指标哈。好,这是我们分成,那下面的问题就是我们为什么要这么分呢?我不这么分不行吗?就像我们这个一七年以前好多的公司直接就ODI层直接解析了,到这就已经拆包,拆包呢,我算一个指标。直接。自己去解压,同时呢,自己去清洗,比如说算一个日活,你要自己清洗一遍啊,你过滤表过滤掉之后,然后出指表,有没有中间这个宽表过程啊,然后呢,我算一个这个留存。啊,或者新增。你都从这直接拿数据,直接去转啊,直接算哈啊,我可以给大家拿出来这个一七年以前的时候哈,那时候啊,咱们也做了一版收仓,那时候就是按照这种逻辑啊,直接进来之后,直接拆包解析,解析完之后啊,他穿他的,他穿他的,他穿他的。
05:15
好,那下面呢是舒畅,为什么要分呢?首先把复杂的问题简单化。将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。很显然呢,你像我这一层告诉他往这一放,起到备份作用,很安全,心里很踏实,不管你后面怎么折腾,折腾完这折腾坏之后,那我重新再来一遍就完成,对吧?那之后呢,D达D层这块呢,它就是把你的数据,所有的数据全部清洗干净,准备好往这一放。那你后面用起来多舒服啊,否则的话,你后面分析这个指标的时候,你还要还会想到想到什么呢,哎呀,我这个值万一是空了怎么办。哎,我这个只是万一不符不符合这个范围怎么办。对吧,哎,我这个这里面某一个字段没有啊。
06:00
那这怎么办?你可能这个每个指标我都这样去考虑,那这样的话你就太累了啊,我需要呢,在需要的就是在DWD层把所有我要的数据,规规矩矩的数据准备好,其他一些章的数据统统全干掉。哎,这就是我们想做的哈,所以说呢,每一层做每一层的事儿啊,这样处理的事务呢,就简单,因为这层就考虑怎么把张书记干掉,那我后面这一层呢,我就考虑怎么分析指标。然后在方便定位问题,那这里面呢,如果说哎分析这个呃指标的时候,突然间发现一些异常,你可以直接回馈到,比如说清洗是因为清洗原因导致的,那我直接定位到我上D到D层,看一下我这个清洗逻辑是不是把一些这个呃是张书记的东西给放过去了,比如说放入到了这个后面的阶层。比如说这个我这个校验规则啊,不是那么特别严,把数据呢放到这儿,放到这儿之后呢,导致他在写一些售后的时候呢,然后出现一些异常,那我在这块就加上不就完了吗。啊,每一层干每一层的事儿。
07:02
再来减少重复开发。啊,刚才我说了哈,这个以前在开发的时候呢,都是从ODI上直接取出去啊,直接取完每一个指标都要干一遍清洗,每一个指标呢,都要重新的去运算。那这样的这个效率就很低了啊,很低了,你说这里面存在着大量的重复计算,尤其是这个清洗工作,每个人都要自己清洗一遍,那你可想而知哈啊,所以说这里面的这个极大的这个重复计算这个效果呢,不是特别好哈。账号隔离原始数据。无论是数据的异常,还是数据的敏感性,使数据真实性与统计的结果啊,这里面主要说的是这个ODI上。哎,隔离这个原始数据,不管你下面你怎么分析怎么乱,随便啊随便玩,你只要发现这个结果不是你满意的,干掉重来,他干掉重来底气在哪?底气就是因为这有一份最原始的数据。
我来说两句