00:00
呃,来各位同学,那咱接下来呢,需要去呃明确一下,就是我们再去确定维度属性的时候,也就是说再去确定维度表当中的字段的时候的几点要求,诶,咱们来逐个的看一下啊,那首先我们先看第一点,第一点呢是尽可能生成丰富的维度属性啊,什么意思呢?就是我们在去设计某张维度表的时候,对吧?那我这张维度表的字段是不是应该尽可能的多,维度属性应该尽可能的丰富啊,对吧?哎,这一点大家应该是能想明白为什么吧?来我们看一下他怎么解释的啊,他这么说的,他说维度属性是后续咱们去做分析统计时的查询约束条件和分组字段的基本来源,首先这句话大家看能不能看懂。啊,应该能看懂吧,咱们之前是不是做过几个这种就是需求啊,对吧?那我们去找一下,前面找一下,找一下找到这个维度模型对不对,那之前我们再去,呃,讲这个维度模型或者一二模型的时候,对吧?我们做过两个小需求,比如说让统计一下2020年,呃,各个国家的这个什么订单总额,对吧?我们是不是做过类似的这样的需求,对吧?其实我们将来绝大多数的需求其实都是类似的,都是这种啊这样你看我们在做这个需求的时候,咱是怎么做的,我们是不是先找到订单金额,然后找到谁,找到year name,这是一个什么?是一个时间维度的维度属性,没问题,对吧?好,那完之后还得找到谁,还得找那个country name,对吧?这是一个地区维度的维度属性吧,之后咱们是怎么做的来着,我们是按照E进行过滤,按照说country name进行分组之后呢,再对这个度量值进行聚合呀,对吧,其实我们绝大多数的这个指标咱们都是这么去算啊,所以说从这你应该能看出来,维度属性是不是就是咱们那个统计的那个circle当中的那个过滤条件和分组字段的。
01:47
基本来源呀,没没问题吧,这个其实就是这么一回事儿啊,那所以说你想一想,我们这个维度表当中,维度属性的丰富程度是不是就支撑了,就是就能决定什么呀,决定我们将来能算的这个指标的丰富程度啊,对不对,大家说是不是这么回事,比如举个例子,那假如说现在呢,我把这个location当中的,哎,国家这个相关的信息,我给它删除掉了,没有这个国家的维度属性,你要没有国家维度属性,我还能算各个国家的这个订单总额吗?你就算不了了,对吧?那再比如我这个date里边,我没有一页这个维度属性了,那我还能算某一年的这个订单总额,你就算不了了,对吧?所以说维度属性越多,越丰富,我们能算的指标它就越多,对吧?所以说我们再去设计维度表的时候,诶,在确定咱们这个维度属性的时候呢,那就应当尽可能生成丰富的这个维度属性,诶这一点要要给他搞清楚好了,他看完了之后,我们继续看下边一个,那下边一个是什么呢?是尽量不使用编码,而使用明确的文字说明。
02:47
诶,这句话咱们又应当怎么去理解呢?啊在这儿呢,我需要先给大家明确一点啊,就是在我们呃业务系统的数据库里边是买soq那一堆啊,啊就是比如说我们这个再去开发一个电商系统的时候,我们再去设计咱们那个电商系统的数据库模型的时候,对不对?那OK,那我这个表当中啊,有可能会去存储一些那种枚举值啊,什么叫一些枚举值,比如说举例子,咱们就以那个支付方式为例,大家想你说支付方式是不是一个枚举值啊,支付方式不是就是三种对吧?那分别是啥?诶什么微信支付宝还有银联是不是就这几种对吧?那再比如说还有谁呢?比如说举个例子,订单是不是有一个订单状态的字段,对不对?OK,有什么下待待支付啊,还有什么这个已支付,还有什么待发货已收货等,是不会有这样的一些东西啊,对吧,那这个状态是不是也是一些枚举值啊,对吧?就是类似的这种枚举值,在我们的这个关型数据库当中,它在存的时候啊,你说他会真正的去存储那个汉字吗。
03:42
他不会的,它存的通常都是什么呢?都是编码啊,对吧?比如说我用一串数字去代表某一个值对吧?比如说我1001,我代表这个微信的支付方式,1002代表支付宝,103代表银联,对不对?OK,那它通常是用这样的编码去存储相关的信息的,那所以说我们在这设计相应的维度表的时候,你想一想,我们能在维度表当中直接给它加一个这种字段,这个这种数字吗?能给直接加一个数字吗?那显然不行的,为啥?比如说我这儿有一个维度员,那就叫支付方式,假如说啊,那之后呢,我直接来个编码,1001 1021,那谁知道这是啥意思对吧?那我后边的这个数仓的后续的用户去使用咱这个数据的时候,他是不是用不明白啊,对吧?那所以说我们尽量避免只使用编码啊,我们应该使用什么,应该使用明确的文字说明啊,是那这个文字说明那在哪存着呢?在我们买搜狗当中,哪张表里会有这些编码的文字说明呢?不知道大家还有没有印象啊,我们是不是有一张表叫做base斯dic啊,对吧,那个dic是什么意思?
04:43
呃,Dictionary对吧?那指的就是字典对不对啊,是这样的,那也是我们有一张字典表,字典表当中会存储我们整个系统当中每个编码的解释,对吧?1001指代的是什么,幺零零二指代的什么,它都会有相应的这个解释,那所以说我们再去设计这个维度表的时候呢,如果那咱们这个维度表当中有一个这种编码,对吧?那我们就需要找到这个编码的文字说明,然后呢,给它加在咱们这个维度表当中,那通常我们这怎么做就行了,一般文字和编码共存,就是我们这俩字段,一个是存编码的,一个是存文字说明的,诶,OK,那通常是这么去做的,这一定要注意啊,好了,那这个其实相对来说也比较简单,咱们只需要遵守一下就完事了啊好,接下来我们看最后一个。
05:24
最后这个字段,最后这个这个这个要求呢,实际上是比较比较重要的,咱们得认真听啊,啊最后这个是什么呢?是我们需要尽量的沉淀出通用的维度属性,沉淀出这个沉淀出是啥意思呢?那我们往下看,看完大家懂了啊来,那我们看这他说有些维度属性的获取呢,我们需要进行比较复杂的逻辑处理,例如我们需要通过拼接多个字段才能得到,什么意思啊,就是我们前面讲过,就是我们维度表当中的维度属性的来源是不是就是两种,一种是直接取自于主维表相关表,对吧?还有一种是怎么得到的,是通过进一步的加工是不是得到的,对吧?OK,那咱们这提到的这个,咱需要进行比较复杂的逻辑处理,需要拼接多字段,这实际上就是相当于是通过哪种方式获取啊,是不是通过加工得到的对吧?好,那在这儿呢,我给大家举一个具体的例子,哎,我们看一看这个所谓的加工是怎么去加工,好,我不知道大家还有没有印象啊,我们之前。
06:24
在复习这个采集项目的时候,我们应该给大家介绍了两张表,一张表叫做activity in for,一个表呢,叫做activity,对吧?还有点印象吧,OK,好,那activity这张表当中存储的是什么?是不是就是我们的一个活动的规则呀,对吧?啊,活动规则OK,那大家想一下,你说将来我们需不需要去建一张活动的维度表呢?有没有可能会建一张活动维表呢?应该有可能吧,对不对?那你想想活动它应该是跟哪个业务过程相关的呀,跟下单是不是应该是有可能有关系,对吧?你是不是可能会记录我下单的时候我参与了哪个活动啊,对不对?OK,所以说活动维度表将来我们确实是会建一张的啊,那活动维度表当中咱们有一个非常重要的属性,那就什么属性,就是你这个活动的优惠的规则吧,但是是不是这个道理对吧?那OK,那活动规则在咱们这张表当中,它是怎么存的,大家还记得吗?是不是这几个字段是用来描述活动规则的,对吧?这个规则这个整个逻辑上还是比较复杂的对吧?它是长对存在的对吧,它俩是一。
07:24
一对,他俩是一对,是不是满多少减多少,满几件打几折呀,对吧?那我到底用谁,是不是取决于活动类型,如果它是满减类型,那就用他俩,如果是满件打折,那是不是就用他俩,对吧?那之前咱们是这么去介绍的,但你想一想啊,将来我再去做一些与活动规则相关的统计指标的时候,是不是每次做这个需求你都要怎么做,你是不是都得去判断一下类型,再拼接一下规则,每次做需求是不是都需要去做一下这样的一个重复的操作呀,对吧?那这样一来是不是显然不太合理对吧?这其实相当于是一些重复的计算的对吧?那所以说我为了方便,我可以怎么做呢?我可以把这些,这其实相当于就是一个什么呀,就是通用的一个纬度属性了,对吧,我直接给他提前算好,算好之后呢,是不是给它加入到我们那个维度表当中啊,对吧,或者叫做沉淀到那张维度表当中啊,就这么个意思,OK啊好,那完之后,呃,咱们将来怎么去拼接它呢?其实很简单,说白了就是在维度表当中加一个字段,对吧,那完了之后呢,我是不是根据这个具体的诶混沌的类型,然后呢,去拼接一下相应的两个字段,然后呢,作为终的。
08:24
值放在咱们这个表当中就完事了,对吧,最终你这个字段里面存的就是啥呢?其实就是满多少减多少,满几件打几折,那这样一来,你将来再用这个这个活动规则的时候,你还用再重新的去拼接吗?就不用了,直接拿是不是就行了,对吧?这就是咱们这个第三一个要求的核心的思想,哎,其实是比较简单的,好了,各位同学,那截止到现在呢,我们再设计维度表的属性的时候,需要遵循的三个要求,咱们就诶讲完了,那这三个要求呢,我们在将来去真正的去建维度表的时候呢,我们都会涉及到,到时候涉及到哪个点,我到时候呢,再给大家往前诶一点,大家就知道这个到底怎么去做了,诶这个到时候咱们再说啊好,完成之后视频我停一下。
我来说两句