00:00
呃,来,那接下来我们看一下互动与评价事务是表,OK,那它所对应的的这个业务过程呢,是评价啊,首先咱得先明确一下啊,就是在我们电商当中,这个评价指的是哪个操作,就是咱们大家都有过购物的经历,对吧?诶我什么时候能评价是买完之后对吧?你确认收货对不对之后是不是才能对这个,呃,我们订单当中的每个商品进行相应的评价呀,对吧?所以这个评价指的是对诶完成的订单进行的那个评价,哎,这一点大家要理解一下啊好了,那接下来呢,我们就来明确一下这张表,最终的这个表结构我就不再一点点去设计了啊来,我们把它的界面语句粘出来一起看一下就行。好了,那现在呢,我们来看一看它最终的建表语句,先看它的表明,呃,表明呢叫做interaction comment INC comment,就是评价的意思啊好,那现在呢,我们来明确一下,它的每行指代的是什么,大家想一想,你说这张表每行指代的应当是什么呀?是一条评价操作记录对不对,肯定是这样的,但是我们得精确到什么程度,大家回忆一下,那咱们之前对得精确到商品才才行,对吧?因为你咱们应该有过评价的经历,你再去评价一个订单当中的这个商品的时候,咱们一般情况下都是怎么怎么去评价的呀,是分商品去评价的,对吧?这个大家应该是有所体会的,那所以说这张表呢,实际上大家应该就能想明白了,OK,我们这张表呢,每行数据指来的是一次评价操作,而且需要精确到是谁在什么时候评价了哪个商品,对吧?诶是这样的啊,大家再准确的说呢,应该是评价了哪个订单当中的哪个商品,诶是这样的啊好了,那完成之后我们继续往下进行,我们来看一看它具体的字段都有啥。
01:42
啊来字段呢,我们从上到下一个一个看就行了啊,第一个user ID,这显然是一个维度,对吧,用户ID,那下一个呢,SKID,这也是一个维度,商品ID,那再往下呢,是这个date ID,是不是就是那个日期ID啊,对吧?其实到现在为止我们就已经记录下来了,记录下来什么东西呢?谁对不对,在什么时候对吧?评价了哪个商品,是不是已经记录下来了,对吧?那接下来我们继续往下看啊,那下边还有一个create time,这个就是具体的评价时间,这个不用过多的解释,接下来我们重点看下边这儿呢,有一对字段啊,叫做ara code和name,对吧?那显然这个其实指的应该是什么呢?
02:19
是评价对不对,这个这个字段它里边存的内容到底是什么啊,呃,这个其实我们光看这看不出来,咱们得去看一下哪呢?看一下业务系统当中是不是这个字段里边存的到底是啥呀,对吧?那其实大家可以猜测一下,你说咱们这张表的数据应该会对应业务系统当中的哪张表。应该是那个comment info吧,对不对啊,其实我可以听到的就是这张表,OK,那我们来看一看这张表当中有没有,刚刚我们看到那那个ari有没有,有是不是就是它呀,对吧?它里边存的是编码幺二开头的,幺二开头的呢,我们往上翻找一下那个字带表,看看它是什么含义,来打开BD,然后呢,找到幺二开头的其实就是啥呀,好评中评差评自动评价对不对,那实际上呢,我们,呃,这个事实表当中,这个字段下边存的是不是就是这条评价,是一个好评还是一个差评啊对吧?好,那现在我的问题来了啊,前面这些字段咱们大家没有什么悬念,对吧,都认为它是维度,那这个字段。
03:17
大家说它应该是一个什么呀。它是维度还是度量呢?这是一个评价对吧,好中差评对吧,那它是一个维度还是一个度量呢。啊,有同学说是维度对吧,那它是不是纬度。有没有同学认为他是度量的?有没有同学认为它是度量,度量得计算对吧?OK啊呃,对度量咱们前面讲过说我们呃这个准确的定义说呢,我们说维度它必须得是,呃度量必须得是什么?得是数字类型的,对不对?那这个是一个数字类型的吗?呃,这个不是,所以说从严格意义上来讲呢,它确实不能算作一个度量,但其实呢,我们广义义上的去理解的话,这个有些情况下也可能会作为一个度量,哎诶这个怎么理解呢?这时候我需要给大家去明确一个概念了啊,就是实际上呢,在以后大家工作的过程当中,或呃就是以后把正建度表多了之后,你就会发现啊,在某些表当中,咱这个事实和维度啊,也就是度量和维度啊,我我这时只是那个度量值啊,OK,事实跟维度之间的那个界限啊,有时候并不是那么的清晰,就在某些情况下呢,这个字段,哎,它既可以是一个维度,它也可能是一个度量,是这样的啊,哎,我为什么这么说呢?在这儿呢,咱就以这个字段为例,我给大家去解释一下,为什么有些情况下这个字段可以是。
04:35
度量,有些地方要是维度了OK啊好,那其实我先给大家告诉这个,大家给大家告诉这个结论啊,就是说一个字段,它到底是维度还是度量,这个其实最终是取决于什么呢?取决于我们怎样使用这个词。啊,那接下来呢,我就给大家诶举两个场景来,我们来分析分析,看看它到底是度量还是唯独啊首先我们看第一个场景,就是假如说我将来呢,有一个这样的需求啊,我想去统计一下,统计什么东西呢?呃,每个商品对吧,那他得到的好中差评数个别分别是多少对不对,我想想统计一下就是每个商品啊,它的好评数有多少,它的差评数有多少,它的默认评价数有多少等等等等,哎,我想统计一下这个东西。
05:21
大家想一想,你如果要算这个,我应该怎么算?啊,是不是得从这两本里取数啊,对吧?OK,那我这个需求大家明确了没有,统计每个商品每个SKU啊,OK,好,那我获得的好评数有多少,中评数有多少,差评数有多少,默认评价数有多少,我就想统计一下这个东西。嗯,大家说这个要算的话,我应该怎么算。啊,首先我们是不是得拿到这张表的数据啊,对吧,这张表一行代表的是不是就是一个人对一个商品的一次评价对不对,那之后呢,我们要统计的是每个商品对不对,获得好中差评默认评价的个数,对或者叫次数对不对,那你说你应该怎么算。
06:02
是不得分组统计啊,对吧,好,那分组按什么分组呢。只按商品分组行不行?不行,你只按商品分组的话,你会把这一个商品是不是获得的所有的评价都分到一组啊,对吧?那么你得到的结果是不是只有一个商品一行了呀,那我这一行代表的是好评还是中评还是差评是分不出来呀,对吧?你怎样才能得到我想要的结果,你在照俩字段分组吧,对不对?按照谁分组呢?一个是商品ID进行分组,一个是什么是price,是不是按照评价进行分组啊对吧?按照这俩字段分组,分完组之后你都能把什么样的数据分到一组呢?会把同一个商品得到的同样的这个评价是不是分到一组当中,对不对?那完了之后呢,我们直接进行一个count芯,是不是能得到每个商品获得的好、中、差评,或者叫做每个商品获得每种评价的这个次数来了,对吧,诶咱就统计出来了,OK,好,那你分析分析在这个场景下边,我们是怎样去使用这个字段的。
07:02
你是把它放在了一个分组字段当中对不对?OK,我们其实前面就提到过,说在我们去写circle统计的时候,对吧,那谁往往是位于分组字段呢,谁。维度吧,对不对,我们就讲过说维度属性,它是我们做circle,做统计的时候,我们的分组字段和外过滤条件的主要来源吧。这个大家还有印象吗?嗯,没印象了,这个前面这个黑纸白段写的很清楚,咱们去看一下啊来,我们找到前边的这个,呃,维度表的这个设计步骤啊,找一下维度表的设计步骤啊后往下翻,往下翻,呃,咱们找到应该是在哪一步来着,我想想啊,应该是在最后一步确定维度属性这一步对吧?OK,那各位同学我们一起来看一下,在确定维度属性的时候,我们说一句话是尽量生成丰富的维度属性对吧,那完了之后他这说了,说维度属性呢,是后续做分析统计时查询约束条件,也就是外过理条件对吧,以及说分组字段的主要来源对吧?也就是说我们的维度表当中的维度属性就是对应我们最终三数当中的什么呀,就是要么就是外部管理条件,要么就是分组字段,那我们刚刚是把这个,呃,这个评价这个字段作为什么去使用了,是不是作为一个分组字段去使用了,对吧?所以在这个场景下呢,它就是一个维度,它就相当于是对我们这个评价的一个描述信息,你这个评价是个好评还是个中评,还是个差评,它这种场景下就是一个维度,OK,好。
08:27
那接下来呢,我们再来看另外一种场景,另外一种场景是什么呢?比如说那现在我有一个这样的需求啊,说我们现在呢,呃,需要给每个商品去打一个分,去给每一个商品打一个分啊好,那我这个打分的这个逻辑是怎么样的呢?我需要根据这个商品获得的评价去打分,哎,OK,那大家都知道这张表里记录了我们每个人对每个商品的每次评价,对吧?OK,那如果说一个商品他得到了一次好评,OK,那我们就给他加五分,就加五分,那如果一个商品得到了一个差评,OK,那我就给他减五分。那一如果一个商品得到了一个这个,比如说中评,OK,好,那我就给他加三分,那如果一个商品呢,得到了一个默认评价,OK,那我就给他加一分。
09:15
诶,那我有一个这样的打分的规则,OK,好,那你说诶,我到底应该怎样去计算这个东西呢?哎,我需要得到每一个商品的一个总分,对不对,根据评价去计算每一个商品的总分,OK,那大家想想吧,你说这个咱们应该怎么算呀?哎,这张表里是不是有每一个人对每一个商品的每一次评价呀,对吧?哎,他都有一个好中差评,OK,那我们按照这样的一个逻辑去给每个商品打一个分啊,咱们求一下每个商品获得的总分对不对,这个应该怎么算呢?其实很简单,首先我们要做的一件事应该是什么?我们应该先将这个评价是不是映射到这个分数上,对吧,没错吧,OK,我们需要拿到每一条评价啊,对吧?然后呢,我们可以来一个K4问对不对,如果是好评,那我就诶映射成五,正五对不对,如果差评映到负五等等等等,你先完成这个映射,那完成之后接下来怎么做,接下来其实又比较简单了,对吧,咱怎么做就行,是不是按照商品ID进行一个分组对不对?之后呢,对刚才我们映射得到的分数进行一个萨姆求和对不对,是不是就能得到每个商品得到的总分啊,对不对,应该是这样一个逻辑啊,OK,好,那完了之后大家再思考思考,你说在刚才咱这个场景下,诶,我们是怎样去使用price这个字段的,我们是先将其进行了一个映射,对吧?映射完之后是不是把它放在了一个sum聚合函数当中?
10:35
对不对,相当于我们间接的,呃,对,对谁进行了聚合呢?是不是间接的对press这个字段进行了聚合呀,对不对,OK,好,那就是位于聚合函数的字段往往是什么?往往是度量值,对不对啊,是这样的,虽然我们没有直接的把它放到一个聚函数当中,但是我们相当是间接的对它进行了聚合,OK,那所以说在这个场景下呢,我们说的是度量,其实也是说得过去的,OK啊,也就是说大家就得得就得理解我们刚刚所提到那个结论啊,就是说一个字段对不对,当你分不清它到底是度量还是维度的时候,这个怎么去确定呢?怎么确定就根据咱们的用法对不对,你要是把它用在了最终的circle语句当中的外二过滤条件当中,或者是用在了这个分组字段当中,那OK,那它就是一个维度,那如果说我们在最终的哎统计的三当中呢,把它放在了一个聚合函数当中,你对它进行聚合了,OK,那它就是一个度量啊,是这样的啊,就是有些字段它的度量和这个维度的界限呢,不是那么的清晰啊。
11:36
那可能是纬度,也可能同时是一个度量啊,这个大家理解一下就行了啊好了,那截止到现在呢,我们就已经呃把这个表的所有字段就都说完了,OK,那这个最后的结论就是啥呢?它既可能是维度也可能是度量啊好了,那完成之后我们继续往下走,行和列咱基本上就都完事了,最后呢,咱来明确一下,就是它的分区规划应该是啥样的啊,分区规划是不是相对比较简单,也就是呃增量分区啊对吧?这个就不再多说了,好,那表结构咱到目前为止就算是这个设计完了,那最后我们来看一看它的数据装载应该怎么做啊,呃,还是那一套呗,对吧?数据专态怎么做?先得分析数据它从哪儿来对不对?要想知道数据从哪来,就得知道评价会对谁产生影响,对吧,就是刚才我们就已经看过了,它实际上呢,是会对我们业务系统当中的common info这张表产生影响的,好了,那接下来咱们就来看一看这张表,它具体的这个结构是什么样的,然后来分析分析它的变化逻辑,这张表大家可能之前也嗯不太熟悉对吧,那现在咱们来熟悉如题啊,看一看这张表。
12:36
当中每行所指的内容是什么?看一看能不能看懂,自己尝试着熟悉一下啊。一行数据看用户ID、商品ID对不对,订单ID,这是那个评价,这是评价的内容等等等,应该差不多能猜出来每行指的的是什么吧?每行指来应该是啥呀?是不是就是一个用户对一个订单当中的一个商品的一次评价呀,对吧,其实相对比较简单啊,好了,那这张表呢,我们再来熟悉熟悉它具体的这个呃,字段,字段都有啥呢?首先第一个就是UID,这个不多说,那下边呢,这个是商品ID,那当然这个PUID是不是也是一个冗余的存在呀,对吧,这个不多说,然后往下走,这是订单ID,这个呢是price,是最终的评价,这个评价刚才看到了有好评,有中评,有差评,对吧?还有默认评价,这个咱就不多说了,然后后边呢,是他具体的评价内容,然后咱再往后看啊。
13:29
往后看,这是不是有一个可time啊,对吧,这个time其实相应的就是什么?就是创建时间,或者说白了就是评价时间呀,对吧?然后我们继续往后看,后边还有一个字段叫做op time对吧?有op time这个这个意味着什么呀。是不是意味着咱们这张表它可能会发生变化对吧?注意啊,这个追加评价呢,呃,并不是在原有的那条评价记录上进行修改,追加评价我相当于是有一条什么呀,新的评价是是会被写进来的啊,所以这个呃,Opera time在这儿呢,它指来的并不是追加,实际上有opera time就意味着我们这张表的数据它会怎么样。
14:07
它会发生变化,这个是有有变化的时候,这个op STEM是不是才有意义啊,对吧,是这样,但是大家平时的这个生活经验应该是什么呢?就是评价我们应该是不能修改的吧,就是大多数的电视平台都有这样的规定,就是说你评价了一个商品之后呢,你是不能去修改它的啊,你顶多是能追加一条对吧,但是你正常情况他不能不能修改的,为什么呀,其实主要是为了防止这个商家他去作弊的,对吧?啊,比如说他你这给他差评了,完了之后,他那比如说给你点好处什么的,对吧?啊,给你返新等等等,让你把那个评价改一改,对不对,一般情况下是不能去改的,就是为了防止这个情况了,OK,但是咱们这既然看到了这个offer time,那其实有时候我们这儿设计的这个评价呢,是可以修改的啊,我刚才提到了,就是绝大多数的电商平台是不支持修改评价的,但是可能有些平台呢,也是支持修改的啊,是这样的啊好了,那这样一来的话,我们这张表的字段咱们基本上就都知道它的含义了,接下来呢,我们就来明确明确啊,就是这张表的变化逻辑到底应该是什么样的,对吧?那比如说举个例子,我现在呢,有。
15:08
有一个人对不对,OK,他对一个订单当中的一个商品进行了一次评价,那咱这张表会产生什么样的变化呢?是新增啊,还是修改呀?是新增嘛,对吧,你要是对一个商品进行评价,那它会新增一条数据啊OK,那这条数据,这张表的数据什么时候会变化,什么时会修改呢。什么时候会修改,是不是当你去修改你之前的一个评价的时候,它这张表是不是才会修改下对吧?诶是这样,这个大家稍微的理解一下就行了啊好了,那截止到现在呢,我们这张表的表结构,还有它的变化逻辑就算是OK了,呃,行,OK之后,那接下来咱们就来分析分析啊,就是我们在做这张表的数据装载的时候,我们到底应该诶怎样去做啊,那当然也得分个首日和每日啊,现在我们先来明确一下,它的首日咱应该怎么去做,咱首日怎么做呀,首日首日我们是不是应该从这一大堆的数据当中去寻找历史的操作记录,对不对,那这个咱们能不能找着。
16:04
应该能找着吧,我这一行能不能代表之前发生了一个评价操作呢?能吧,对不对?因为啥呢?前面就讲过,是不是只有当我们用户评价一个商品的时候,这张表才会INSERT1条数据啊,对不对?那既然有一条数据,那就证明原来有一个评价操作啊,这个要理解一下好了,那首日的时候,我们说白了就是直接拿这两表全表数据拿到之后,那里边显然是有很多的历史操作的,对吧?我们用create time作为它的操作时间,那这块呢,我们需要做动态分区,对吧?这是首日,那每日呢。每日是不是应该从这张表的一堆insert和update的操作当中去寻找评价操作呀,对吧?评价应该是什么类型的操作?是insert吧,对不对?OK,我们要的是评价,我们要的不是修改对不对,那所以说在这儿我们只需要找inser的操作就够了,OK,那这张表的这个大体的逻辑咱就定下来了,最后我们来看一下它的中载语句,来找到文档,呃,找到这个,呃,评价事物时表,然后呢,我们往下翻,把它的首日和每日咱一块给它粘出来就行了啊。
17:05
来,CTRLC,来我们拿过来,好,那现在呢,我们一起先来看一下它的首日状态是怎么做的啊,这个首日其实相对,呃,不是很难来我们看一下,呃,它这儿写了两个子查询,对吧?呃,之所以要写两个次查询呢,其实主要是为了找雷,找那个dic对不对,因为什么?因为我们刚才看到了这个评价字段,它里边存的是不是编码啊,对不对?那所以说呃,我们需要去找一下这个字典表啊好,那现在我们来看一下它具体的这个逻辑啊,首先我们先看第一个自查询,第一个查询呢,拿到的就是com in for这张表的首日的全量分区,它并没有做过多的这个过滤,对吧?而相当于把全面数据都拿出来了,拿出来之后呢,我们进行一个简单的处理,对不对?之后呢,再往下走,需要去join一下谁是不是这个字典表对吧?拿到我们这个具体的编码和这个文字说明,那之后呢,进行一个left进行关联,然后往下走,上面呢,进行诶这个相应的查询之后,就可以通过动态分区把数据写到诶这个表当中了,呃,然后注意咱们是用谁作为动态分区的值的,用对吧这个。
18:06
有问题的,这就是评价时间啊,这是首日,那接下来呢,看一下这个每日怎么做的,每日也不难啊,往下走,哎,每日跟首日的逻辑大概是差不多的啊,这个结构首先我们先看这,诶这是OS common four152分区,我们只要insert类型的操作对不对,这就是一个一个的评价记录好,那找到之后呢,往下看,那这个是这个啥?这是一个字典表对吧?它俩进行一个left左外联之后呢,把数据全部查出来,诶放到咱们这张表15号的分区,那就OK了,诶这张表相对也比较简单啊,行了,那这个完成之后,视频我给他停一下啊。
我来说两句