00:00
嗯,来吧,各位同学,那咱接下来呢,就先来设计一下我们前两个汇总联,我们先去看一下咱们第一个吧,就是这个不是得有一个1D,得有一个ND的嘛,对吧,我们先设计一个ED的啊来,那现在我们打开这个呃呃瑞,然后咱们就开始了,那在设计之前呢,我们先来明确一下,咱们这个第一张汇总表,它的表名应该是什么表名咱应该怎么确定来着,是不是根据这个表下边的派生指标去确定啊,对吧?OK,好,那完之后那个命名规范有哪几部分组成,大家还记得不?找一下啊,找到那个DWS往上翻在这个位置,然后呢,这个是咱那个命名规范对不对?好,那现在呢,我给他F1给它截个图,然后呢,F3盯在这儿,咱照着它去设计一下,好,那首先我们这个就得有一部分是DWS对吧?这个不用说好那下面呢,应该是数据域对不对?好,那现在我们对照着这个派生指标去设计,那咱的数据应该是什么,是不是基于这个业务过程去确定,对吧?下单是咱们的业务过程,下单所属的数据域是哪个,是交易域对不对?所以在这儿呢,我们应该写上一个税的没啥问题,然后接着往下走,统计力度,咱这是一个什么力度的。
01:09
是一个品牌力度对不对?品牌力度那在这儿呢,我就得写上一个是不是TM啊对吧,写一个简写就行啊,当然有时候你写P音也行啊好,接下来继续往下走,品牌就是pretty嘛啊,然后再往下,再往下是什么?是业务过程对吧?业务过程咱这是什么?是下单对不对?那所以在这呢,我们应该写上一个order啊older OK,那继续往下走,那再往下就是统计周期啊,统计周期刚才说了,我们这分两个,一个是ED,一个是ND,对吧?诶看错了,咱得一个下来,我们先看这个ED的啊,所在呢,我们先写一个ED,诶这就是我们第一张表的表明对不对?好,那接下来呢,我们来看一下这个表结构具体应该是什么样的,咱们先规划一下,然后再去写那个鉴表语句啊,规划一下,你说这张表咱们的结构应该是啥样的。结构这边呢,我们得考虑到行,还有列,还有分区对不对?好,那先看行,每行指代的应该是一个什么,应该就是一个品牌吧,对不对,力度不就是品牌力度嘛,对吧?所以一行应该是一个品牌,那我的列应该有什么列呢?列应该是什么呢?列其实应该至少得有三列吧,至少得有三列完一列是有是什么?就是那个品牌的ID对不对?那第二列是什么呢?是不应一列对应一个派成指标啊对吧?我这里边有一个是COUNT1 count1那个我们算的是什么来着,算的是那个下单的次数吧,对不对?OK,所以说应该有一个下单的次数,就是各品牌下单数,下单次数对吧?那还有一个是什么呢?是下单的人数,就是各品牌是下单人数是不是,至少咱们得有这样的三列没问题吧,OK啊,那当然呢,其实呃,这里边儿我们还可以再加入一些字段,比如说加上谁呢,我们可以再把那个品牌的名称也给他加入进来。
02:48
诶,为什么要把平什品牌名称加入进来呢?其实道理很简单啊,大家想一想,你说我们DWS层咱这个汇总表,你设计好之后,你是给谁用的?是给ADS的各项指标用的,对吧?那我们ADS的各项指标将将来都得干啥,是不是都得做各种各样的展示啊,对吧?那比如说我想把这个结果展示一下,那我总不能只展示这个品牌的ID吧,对不对,我是不是至少得把那个名称带出来,我得知道是啥对吧?是这样的,那所以说呢,那也就是ADS层最终我肯定是需要这个什么名称啊等等这样的一些具体的维度属性的,是这样的啊好,那假如说我们在设计DWS层的表的时候,我不给他放入这些名称,那你最终得到ADS的结果的时候,你还得怎么,你是不是还得用DWS层的汇总表去跟谁去照一下。
03:30
维度吧,对不,因为你ADS最终我需要拿的这个名称嘛,对吧,那你DWS层最佳球有没有没有,你就得照维度呗,照完之后再得到最终结果对不对,也就是说你可能需要一层join,那如果说我要是想避免这些照操作,那我其实就可以怎么做呢。是不是也是可以把一些维度属性退化到这个汇总表当中啊,对吧?哎是这样的,OK,那也就是我们在设计它的时候也能加入一些维度属性,当然这个不强制对不对,我我我不退化行不行呢?我不退化也行啊是这样的啊,这个大家来自愿就行了,然后大家稍微的回忆一下啊,就是之前我们在呃讲那个数据仓库的分层的规划的这儿,当时这是是画了一个图啊对吧?诶那个图是什么样来着,下边这一层是ods,这儿呢是DWD,这是DWS,然后DM咱是怎么去来规划的,是横跨了DWD和DWS对吧?这个横跨是什么意思呢?其很简单,就是说诶我的维度表当中,维度信息我可以被这个事实表去关联,我可以也可以为谁呢?D被DWS层去关联,那理老,所以实际上是这个意思,所以说我们DWS层这个表,你在设计的时候,这个维度属性你可以退化,也可以不退化,不退化你就去招呗,就这个意思啊好了,那接下来呢,我们继续往下进行列,咱们基本上确定下来了,那接下来呢,我们再明确一下这个分区如何规划。
04:46
大总你说这个分区咱们怎么规划比较合适,你要知道我们这里边要算的是什么,是最近一日的汇总结果对不对?而这个最近一日咱前前面讲过,我不是只算一次就完事了,我要算每一天的最近一日,对吧?那所以这个分区咱怎么规划比较合适啊,其实就是按天分区呗,对吧,我就一天一个分区,那每天的分区率我就放什么。
05:10
这个分区其实应该跟DWD层的事实表的分区是不是应该是能够对应上的,对不对?那我DW层,比如说咱们就以那个民,就是那种事务时表为例啊,因为主要就是事务时表对吧?OK,事务时表我们分区规划是不是按天分区,然后是增量分区啊对不对?我事时表当中每天的分区得放在什么,是当天的明细操作对不对?OK,那我对应的DWS我就怎么做就行了,你就放当天的明细的汇总结果是不就行了,对不对?比如说我14号的明细,我聚合完之后就放到咱们这个汇总表14号分区里没问题吧,那15号的明细我聚合完之后就放在汇总表,是不是15号的分区,那就完事了,对吧?诶实际上是这样的一个逻辑,所以说DWS层的汇总表,哎,咱们以ED为例啊,先说ED,那ED呢,它的分区规划就是这样的,一天一个分区,每天的分区就放当天的明细的汇总结果,诶这就是一地表的分析规划好了,那现在行还有列,还有分区,咱基本上就规划完了啊规划完之后,那现在我们就来看一看这个建表语句,咱们到底怎么去写这个。
06:11
我肯定不会一点点手敲的啊,咱们去找一个文档当中的这个现成的汇总表来CTRLC,咱给它粘出来,然后呢,稍微的改一改就行啊来放在这个位置来吧,咱们稍微调整一下,那首先我们需要先改,先改一下表名,对吧,把它拿过来CTRLV,这个呢也CTRLV,好,那下边继续往下走,这个位置是不是也有表名啊对吧?给它改一下,那当然这个注释也要改一下啊,咱们现在是什么是交易域的没问题,咱是什么力度,不是用商品力度,我们是品牌力度,对吧?诶来一个品牌好没啥问题吧,然后呢,后边是订单这个业务过程没问题,最近一日汇总表没问题,好,那下来我们继续往上看,下边是不是就可以改这个字段了呀,对吧?啊,改字段,按照我们刚才所说的,我们是不是至少得有三个字段呀,对吧?好,那现在我把这个多余的先给它删掉,那首先第一个那就是应该是啥呢?是不是应该是那个品牌的ID,这个不用多说,对吧?哎,这儿呢,我们稍微的调整一下,改成呃品牌ID,呃品牌好,那改成品牌ID没问题,然后再往下呢,再往下,其实我们可以退化一些维度属性。
07:11
对吧,比如说在这呢,我退化一下吧,我给他设计一个TM是不是ametm内嘛,对吧,好,那接着往下走,那这个呢,应该就是下边的品牌相当是名称了,对吧。呃,这个CTRLC拿过来,这CTRLV这个改成品牌的,诶名称好,这个没啥问题对吧?那接下来咱继续往下走,我还需不需要去需不需要其他的字段,需不需要需要吧,因为你这两个排派生指标的统计值数必须得在里边啊对吧?这俩一个是什么?下单的次数,一个是下单的人数,对不对,所以在这儿呢,我们把这个次数和人数给它放在这儿,我肯肯,那首先一个呢,就是呃,比如说我们叫做older,下线Co,那还有一个叫什么呢?叫做older,然后下线user,诶看看一个是次数,一个是人数,对吧?那在这呢,我们调整一下啊下单的这个呃次数,然后呢,下边一个是下单的人数,好了,那这块我们就调整完毕了,那调整完毕之后呢,我把这个格式化一下,Ctrl al l,好了,那现在呢,就已经诶格式化好了,那截止到现在呢,那我们这张表的建表语句是不是理论上就应该是写完了呀,对吧,OK,好,那那这个表是不是好像就已经设计完毕了,对不对,OK,那现在我们来分析分析,就这个表就咱就。
08:21
这样去设计好不好使,就是将来我们在用它的过程当中呢,就是会不会出现一些比较麻烦的事儿。首先咱们先说就是这个汇总表能不能应对我们现有的这俩需求。完全可以应对,没有任何问题,对吧,但是你要知道我们这个书仓里边的需求,它不是说是一成不变的,我将来是不是还可能会新增哎,其他的需求啊,对吧?来大家跟我思考一个问题,假如说将来我们多了一个这样的需求,他让我们统计什么呢?统计个就是也是最近一期三十日的啊,最近一期三十日,然后呢,也是各品牌这个力度,然后让我统计的这个原则指标是什么呢?不再是前面的什么下单次数,下单人数了,让我统计的是啥?这回让我统计的是比如说下单的总斤数。
09:09
以及下单的总金额,诶能看懂吧,实际上我们刚刚所说的这俩指标,其实理论上也应该是一个派生指标,对吧?而这个派生指标呢,他们的这个统计周期,统计力度,还有这个业务过程,是不是跟刚刚我们这两个是完全一样的,对不对,也是看也是,诶最近一期三是也是各品牌也是下单的件数和下单的金额都是下单对不对,也就是他们的统计力度,业务过程,统计周期都相同,那要都相同的话,理论上我们也得干啥,也得为他是不是去设计一个汇总表啊,对吧?而这个汇总表那跟这张汇总表他们的表明是不是应该是完全一样的。没问题吧,那既然是完全一样的,那我怎么办呢?我能再建一张同名的表吗?那肯定不能,对不对?那我应该怎么办呢?是不是得把那俩派生指标是不是得加到这张表的字段里边来呀,对不对,那你加其实就是一个什么操作呢?是不是就是一个改表的操作呀,对吧?OK,那也就是说我们将来诶出现了新的需求,我们可能会对原来的表进行修改啊,这个修改的操作大家都知道,肯定相对来是比较麻烦的,对吧?因为你改表的话,你需要考虑到原来的历史数据,你怎么去处理对不对,这个相对比较麻烦,那所以说我们在出仓里边呢,我们在设计这些表的时候呢,要尽量的去避免这种改表的操作,对不对?OK,那现在问题来了,我们怎样去设计这张表,能够去避免将来可能会出现的一些改表的操作呢?
10:36
怎么设计能够尽量的去避免改表的操作?啊,其实呢,两种方案,两种思路啊,第一种思路你可以怎么做呢?啊,就是说咱们打破我们现有的这个设计的思维,我们不这么设计了,我们现在是怎么设计,我们是让一个汇总表当中装多个派生指标,对吧?OK,那我现在我不这么设计的,我还回归到咱们最开始那种思路怎么做呢?我就是一个派生指标,我对应一张汇总表,诶那这样一来的话,你像我们刚才那种场景,我多了两个,呃,是不是?呃,统计力度相同的业务过程,相同的统计周期的这个派生指标,对吧?那我需要去改原来的标吗?我不需要,我只要怎么做就行。
11:15
我新建两张表是不是就完事了,对吧?因为一个派生指标是不是对外一个表,对吧,我新建两表就行了,我不会改表对不对,那新建表是不是要比改表更方便一点呀,对不对?OK,那这是一种方案,但是这种方案呢,会导致我们设计出来的表数非常的多呀,对吧,这个其实也不太好,所以这种方案呢,我们这儿并没有采用,那我们另外一种方案就是什么呢?很简单,另外一种方案就是咱们在设计这张汇总表的时候呢,我们应该具备一定的就是前瞻性,对不对?啥意思呢?就是说虽然我们目前这个需求比较少,我只有这样的两个派生指标,但是我将来我是不是可能会有一些呃,这个其他的派生指标啊,对吧?那我现在在设计的时候呢,我就得考虑考虑我将来还可能会去算什么东西,对不对?诶那你考虑完之后,是不是就可以提前先把这些派生指标给它加进来啊,对吧?OK,那当然有同学可能会说了啊,我现在用不着,然后呢,我还去算它,这个不会带来一定的这个就是呃计算浪费吗?会有这个计算浪费的现象吗?其实并不会对的,因为道理很简单啊,就是甭管你这里边有几个派生指标,我在算它的时候,我其实都是怎么算,我都是只拿一遍数据,是不是一次性的把这指标都算出来的,对吧,对不对,哎,是这样的,你算俩也是拿一遍数据,我算五个,我还是拿一遍数据,所以说这个计算浪费,这个不用考虑啊,这样的啊,所以在这呢,我们可以具备一定的前瞻性,完里边呢,咱们提前。
12:37
多设计几个将来可能会出现的抬升指标,好,那现在问题来了,你这个所谓的前瞻性有没有什么参考的依据呢?我这我这总不能瞎写吧,对吧?我怎么能知道将来可能会算哪些东西呢?再说这个有没有什么依据啊。哎,对,其实有依据啊,你要知道这些东西最终最终肯定是都是怎么来的,是不都是从与这个业务过程相对应的那张那张事实表的那个聚度量值聚合而来的呀,对吧?所以说我们是不是可以参考这张事实表的度量值,诶去干啥呢?诶去预测将来咱们可能会有哪些,呃,就是需要用到的太阳指标啊,对吧?是这样的一个道理,OK,那接下来咱们去看一看啊来我们可能F找到咱这张汇总表所对应的,呃,这个实时表,那它对应的市表应该是哪张表,应该是DWD层的交易域里边的谁O的那张表来了,OK,那咱们找那张表,找到这之后呢,咱们来看一看,这里边度量值都有啥啊,度量值是不是就是那几个呀,什么SQ number是不是就是商品的件设,然后还有商品的各项金额呀,对吧?OK,那所以说我们这儿可以怎么做,其实你是不是可以根据那些度量值,是不是给它往这加上几个字段就完事了,对吧?啊在这呢,我就不再都加上了啊,因为呃,咱们意思一下就行了,我加俩字段,我加一个件数,我再加一个金额,OK啊好,那现在我们首先来一个键数,那在这儿CTRLD就行啊呃,首先我。
13:53
再改一下,这个我应该改成order是不是number啊,对吧?这个改成下单的应该是诶件数OK,这个很简单,我们继续往下的,那再往下呢,应该是older什么呢?诶比如说amount,我们amount是不是好几个呀,对吧?在这儿呢,我就拿那个total amount,也就是最终金额就完事了啊这应该是下单的这个总金额,诶金额OK,这个应该没啥问题吧,当然还有一些优惠金额什么的啊假这呢,我就不再给他诶写了啊大家知道有这么一回事就行好了,那呃,什么那类型得改一下,类型得改一下,咱们现在这几个统计值的这个类型还是string啊对吧,我们得调整一下,这个改成啥呢?这个改成诶be个哎,In就行,Be个in OK,那这个呢,咱们也改成big in,诶CTRLCTR位这个都没问题,然后最后一个呢,咱们改成啥呢?就还改成这个decim类型,呃,因为涉及到这种金额的啊,呃,它是不是要求比较严格呀,对吧,我们尽量使用die类型,你要用double,用flow的话,是不是可能会存在一些误差呀,对吧?啊会有精度损失的一个问题,这个了解一下,那这个呢,我们写16 16是不是代表总位数。
14:53
二是不是代表小分位啊对吧,这个理解一下CTRL2代L好了,那这张表呢,咱们就算是设计完毕了,OK,咱们最终总结一下啊,就是我们再去依据这个所谓的现有的这些派生指标去设计咱们这个汇总表的时候呢,我们就完全按照那个逻辑就行了,首先什么逻辑呢?业务过程相同的统计周期相同的企业统计力度相同的这样的排产指标,我给他设计一张汇总表,然后呢,当然我们在设计汇总表的时候呢,诶,我们需要具备一定的前瞻性,对不对,我们可以在这张表里边是不是加入一些,就是现在没有,但是将来可能会有的一些指标啊对不对,那这个我加这现在没有,将来会有的指标,我参考谁呢?是不是就参考咱们这张汇总表所对应的那张事实表的度量值就完事了,对吧?啊就这个意思,大家理解一下就行了,因为你所有的需求是大部分绝对几几乎就是可以扣90%以上的,都是怎么算呀,都是对事实表里的度量值是不是进行聚合呀,对吧?所以这个大家要理解一下对吧?那截止到现在呢,我们这个就算是设计完毕了,OK,好,那它要是设。
15:53
设计完了之后,那接下来呢,我们继续往下进行视频,往下停一下。啊好,各位同学,那咱接下来呢,继续往下进行,现在1D表的表结构咱们算是设计完毕了,那接下来咱就来看一看数据装载怎么做,实际上这个数据装载会非常非常的简单啊来,那咱们现在一起来看一看数据状怎么做呀,首先咱是不是得先明确一下我们需要用到哪张实时表,对咱用哪张时表下单呗,对吧,这个不多说,用哪个维度呢?用不用维度?
16:22
得用,因为我们这设计了,我们要做维度退化对吧?你退化进来一个TM name对不对,那你就得从哪去拿TM name事实表里咱们有吗?没有,那你就得用哪呢?就得去从哪儿啊,是不是从商品维度表里去拿对吧?这个咱不用多说啊,那接下来呢,我们就去拿一下我们所需的数据啊,首先我们先找到我们所需要的市值表,应该是DW层的交易域的,呃,然后后边那个是哪个O,是不是D这个INC啊对吧?哎,先把它拿到,拿到之后我们用不用过滤一下分区啊用吧,因为我们这是不是只需要最近一天呀,对吧?就在这儿呢,我们先拿一个最近,假定咱们最近一天就是六月14啊,那我们就拿2020年的零六杠幺四这一天的数据,这个应该没啥问题对吧?好,那接下来继续往下倒,那这里边我们需要拿它的哪些字段呢。
17:09
你想啊,你要想算这些东西,是不是肯定需要一些度量值啊,对吧?OK,好,那完之后呢,你是不是一会儿还得拿到商品所属的品牌对不对,所以说你一会儿得去干啥,得去关联一个维度表吧,没问题吧,OK,那你用谁去关联维度表,是不是得用那个商品的ID去关联对不对,我们这个明细表里边有TM吗。没TM你咱们这是不是只有一个s ku啊对吧?所以在这呢,你得拿到SQID,这个其实没什么悬念对吧?必须拿到,OK,那接来继续往下走,那下边TM内TMD1会去围里边来拿就行了啊然往下走,这个order count order count咱们指的是什么?是下单的次数了对吧?次数是不是一行就表示一次的对不对,这个我不用拿字段对吧?这个大家也一定能搞清楚,接下来往下一个order u count,这个得算什么?算人数,人数咱们得得算得count第一次性的UID对吧?所以UID咱是不是得拿到对不对?OK,接下来继续往下倒,那这样呢,我还得算一个什么件数,那所以说我应该把每一个明细的件数是不是都拿到,一会求和才能得到结果呀,对不对?所以在那呢,怎么办?是不是拿一个件数,也就是那个SK number啊,对吧,拿过来还有一个就是那个金额了,金额在那儿其实好几个,但是我们这儿呢,只拿那个total amount啊来咱们拿这个,别的咱就不再拿了啊好了,那这几个字段咱们先给它拿到,拿到之后咱接下来继续往下走,下边咱是不是还得去关联一下那个纬度表啊,对吧?好,那现在我们from一下dim层的。
18:29
SKU负这张表,注意它是一个每日全量表,对吧?那完之后我们只需要拿它的一个分区是不是就行,拿哪个分区啊,14号分区很简单,为什么拿14号呢?因为咱们事实跟维度进行关联的时候,咱们有要求,什么要求来着,哪天发生的事实是不是就照这个维度哪天的状态呀,对不对?OK,那现在呢,我们拿到这个分区,那我们拿哪个字段呢?首先第一个就是midd,必须得拿得做关联吧,第二一个t m midd,第三一个t m name,这个应该没什么悬念,对吧?好了,那现在两个子查询都拿到了,我们现在就可以对它来进行一个是不是join操作了呀,对吧?来CTRLX,我们给它放在括号里边,然后CTRLV,这个呢,我们给它往前推一把啊好,那这个呢,CTRLX这个拿过来,诶CTRLV这个呢,往前推,把这个推多了啊。
19:14
再推一下,好,那现在他俩各自给他们起一个名,这个我们起名叫做OD detail啊,这个呢起名为叫S啊,那他俩是不是得做一个关联啊,对吧?在这呢,我们就来一个left就行了,好,那完成之后呢,我们来一个on,应该是OD点谁呃,SKU下下ID得等于SKu.ID吧,对不对?那接下来我们就可以从里边去select哎数据了,对吧?那select时候咱们得做一个什么操作?得做一个什么操作,你要算的最终力度是什么力度来着,是品牌力度嘛,对不对,是品牌,那我们现在是明细对不对,那明细到品牌力度你必须得怎么做呀,得分组聚合吧,对不对?OK,你得分组聚合,那按谁分组呢?力度是谁是不是就按谁分组对不对?所以说我葛如拜一下格如谁葛如BYTM是不是就完事了,对吧?OK,那在这种情况下,你把什么样的数据分到一组了啊,把什么样的数据分到一组了,你要知道咱们这拿到的是明细对不对,你把什么样的数据分到一组了,是不是把购买同一个品牌的商品的明细是不是咱分到一组里边去了,是,是这个道理吧,OK,好,那我对这些明细进行聚合,是不是就能得到各品牌的一些下单的相关统计啊,对不对,就这样一个逻辑啊,好了,那完之后我们把它诶拿过来,拿过来之后我们上面就可以干啥了,是不是可以选择我们所需的字段了呀,对吧?那我们所需字段首先第一个就是t m midd,这个没问题,第二一个呢,T m name OK,好,那现在问一下大家,我这直接选它能不能行。
20:41
不行,为啥不行呢?很简单,因为我们下面有分组嘛,对吧,你分组之后,那按照我们汉语当中的语法来说,就是我上面只能选什么分组字段以及什么以及聚合值,对吧,那你这个TM既没分组也没聚合,是不是就不能选呀,对吧?那这个怎么处理它呢?很简单,我在这儿我给它加上一个TM内,行不行行不行,诶加上它,首先我这语法肯定是满足的,对不对,但是你加上它之后,会不会改变这个结果的力度呢?因为咱们都知道我分组是不是会改变结果的力度啊,对吧,对不对?那我按照一个字段t m mid分组和按照这俩字段分组,它的结果的力度是不是一样的呢?其实是一样的,因为啥呢?因为你的t m mid跟TM内它是什么样的一个对应关系,是一对一的一个关系,对不对?所以这块呢,应该是没啥问题的,这个大家理解一下啊,嗯,TM改了。
21:36
改了,那我这一天里边它也是只有一个状态,就是在一天里边我们这个维度不可能会出现说有俩名称的,即便他改了,咱们也是只取一个状态啊,是这样的啊,OK,这个咱们理解一下啊,OK,好,那一会在这儿呢,我们,呃,肯定是一个品牌ID对应一个品牌名称啊,是这样的啊好,那完成之后呢,我们继续往下走,也是我们这么写也不会改变这个结构的力度啊,那我们继续往上走,呃,完了走的话,那在在这儿呢,我们是不是就可以开始去写那些聚合函数来了对吧?来一个来首先第一个就是old count order count,这个很简单,只需要怎么做就行,是不是count星或COUNT1就完事来了,对吧?那既然提到这个count啊,在have当中,Count星和COUNT1这个结果是一样的,没有任何悬念啊,那完了之后呢,还有一种count的方式,就是count一个什么count某一个字段对不对,OK,那count某一个字段跟count一看芯它可能会有啥区别。
22:29
啊对,你是不是得考虑一个闹值的问题对吧?这给大家解释一下啊,首先你要知道count都是在数什么数行数都是在数行数对不对?OK,我看的星跟我看到一对不对,那每行那肯定都是有值的对吧?哎,那所以说这样一来的话呢,我这个结果肯定是一样的啊,都是这个总行数,那我要是看的一个具体字段,那假如一个字段里边的值呢,可能有A有B有C,完了之后呢,有no对不对?OK,那你这时候你要是用countt去count这个字段,你得到的结果应该是几呢?应该是3NOW是不会被计算在count里边的,对吧?这个大家一定要注意一下啊,好了,那这个完成之后,咱继续往下走,那次数搞定下一个该谁了。
23:05
看这个count,这个order user count对吧,就是下单人数对吧?下单人数这个怎么处理count是不是的user ID就完事了,对吧?来,那这个拿过来这个user ID给它放进去好了,这个是不是就搞定了,搞定之后我们继续往下走,那再往下该算啥了?该那个什么number了,对吧?Number这个怎么算,是不是求和就行了,你把每一笔明细里边那个件数求和是不是就是总明细啊对吧?来我们看SQ number给它放进来,好,这个相对也比较简单,那我们再继续往下走,那再往下给谁呢?是不是该那个总金额了对吧?来一个split total mark来那这个这样一来的话呢,我们是不是就已经搞定了我们这个呃,数据的查询呀,对吧?好,那这个呢,我们就不再去计算了,肯定是没问题的啊,那之后我们需要做一件事,就是干啥呢?是不是得把它insert一下,对吧,我们就得insert说right到table dws的刚刚这张表后边是不是得要分区,分区里边咱们得写啥呢?得写一个DT,等于是不是2020杠零六杠幺几。
24:02
要紧幺四对吧,因为咱们知道我们这儿拿的是14号的明细,对吧,聚合完之后是不是得放到汇总表14号的文具啊,对吧,这个比较简单好了,那截止到现在,那这张表数据装载咱也就搞定了,是不是感觉很简单对不对?好,那现在我把视频停一下。啊来各位同学,那我们继续往下看,呃,再往下我们要做的工作应该是什么呢?应该是什么呀?设计ND表吧,对不对,因为我们前两个是这个派生指标,是不是既得设,既要设计一个ED的,也要设计一个ND吧?好,那接下来咱们来设计这个ND的表,那首先我们还是要明确一下,就是这个ND的表,那咱们的这个表明应该是什么表明应该是什么表明其实跟之前那个ED的表是不是应该是类似的,对吧?只需要把ED改成ND是不是就行了,对,因为它俩只有统计周期不一样,别的都一样对吧?好,那接来接往下头,那表结构怎么设计呢?表结构仍然是行列分区啊明确一下先说行。每行指的应该是每行。
25:02
还是还是品牌吧,对不对,这个力度是不是摆在这儿,是不是还是品牌对吧,没什么可说的啊,那列呢。列应该是啥样的,想想。列,首先第一个列是不是也得有一个品牌的ID对不对,也当然也可以带一些品牌的名称,对吧,这个没什么可说的,然后然后是不是就得有一部分字段用来存储7D的这个统计值,有一部分字段是不是得用来存储30D的统计值啊对吧?OK,好,那我这边有哪些字段呢?有哪些字段是不是还是取决于我们的这儿的这个派升指标啊,对吧,你让我算什么,我是不是就得包含哪些字段,当然我们也得有一定的是不是前瞻性啊,对吧?啊这样,所以说实际上ND表里的字段我们就可以跟哪保持一致的,跟ED是不是保持一致就行了,对吧,是这样的啊,所以在这呢,我们ED这个这个这个ND的字段,我们就一会儿呢,就从这儿直接复制一下,那就完事了,当然了,咱们得得分两份啊,为什么得分两份,因为1D表里这个是不是代表的只有1D啊,对吧?但是在我那个ND表里呢,我是不是得有一部分是7D的,还得有一部分是30D啊,我是不是得拿两块啊,对吧?这个大家理解下行了好了,行和列基本上就明确下来了,最后明确一下分。
26:13
区规划,大家想想,你说这个N地表的分区,咱怎么规划比较合适?ND表怎么规划合适,就是ND啊,咱们在算的时候呢,就是将来做各种各样的指标的时候啊,我们也不是说只算一次最简ND就完事了,我也要怎么算呀,我也要算每一天的最佳N天吧,对不对,我截止到14,我要算个截止14的六最佳天,我到15,我要算个截止到15的最佳N天,对不对?所以说这个分区怎么规划比较合适,其实也是半天分区,也是一天一个,对吧?那他每天的分区里放的就是啥呢?就是截止到当天的最近N天。对不对,15号会有一个截至15的最景天,14会有一个截至14的最景天,哎,实际上这是它的一个分区规划,这块儿大家一定要了解一下啊,OK啊好了,那完成之后呢,我们行列分区基本上就都确定下来了,我们现在只需要把这个ED的表给它CTRLC拿过来,然后咱们稍微的调整一下就行,哎,放在这儿啊,哎,我们先给它改一下这个表名,呃,首先ED全部改成ND对吧?啊,这个没问题,然后这儿呢,是不是也要改一下呀,改成最近七天,这个没问题,然后呢,我们需要把这个字段调整一下,对吧?由于我们需要放一份,放一份存这个7D的这个统计指标,还得再来一份,是不是存30的呀,对,所以这个字段名咱们最好调整一下,你得区分开这个七和30吧,对吧,怎么区分。
27:34
加个后缀是不是就行,对吧?这个全给加一个7D,后边加一个30D就行了,对吧?来,那现在呢,我们快速的CTRLC拿过来调整一下,我们放在这里边调整吧,嗯,CTRL位呃在这儿呢,给它还有它还有它还有它,哎这边呢,我都给它加上一个下划线啊,然后呢,来一个7D,哎,这个是不是就清晰了呀,对吧?好,那玩到后边这个注释咱们最好也给它加一下啊,注释上面咱是不是也给它加上一个,是不是最近七日这个是不是比较清晰啊对不对,OK,那现在7D的字段咱就调整完毕了,那之后呢,我给它放在这儿CTRV啊那现在呢,我们呃7D的有了之后,是不是还得再来一份是30D的呀,对吧?好,那现在呢,我们CTRLC,呃,这个直接CTRLF吧,我们把所有的七都给它改成是不是30,那就完事了,对吧,CTRLCTRLC拿过来,那之后呢,放在这个位置CTRLV好了,那截止到现在呢,我们这个所谓的ND表的这个表结构是不是也就算是设计好了呀,对吧?哎,这个其实并不难理解啊,好,完成之后视频我给他停一下。
28:32
好来各位同学,那现在分析一下它的数据装载怎么做,怎么做数据装载。分析分析这个不难吧,应该啊,大家这个不要走神啊,这个一定要跟着我走啊,今天我们会涉及这个整个的知识点啊,呃,这个理论我们就只走这一遍,然后明天或者后天呢,我们就不再去涉及这些知识点了啊啊,所以这个一定要跟紧一点,怎么去做这个数据状态。做数据状态是不是首先还是得先明确一点,哪一点呢?你得从哪取数对不对?但说我们往ND表里状态数据,我去哪取数啊,去哪取分,那是不是肯定是异地表里取分对不对?那当然啊,这个也不是绝对的,因为有些情况下呢,比如举个例子啊,我这个统计指标,我没有这种最近一天的这种统计的需求,我只有这种ND的需求,那我是不是可能就不需要去建那个一地表了,对吧?你要不建一地表,那没办法,只能从市值表里取了,对吧?这个大家稍微理解一下啊,也就是说在有一地表的前提下,那我肯定是优先从一地表里取,对吧?那我们这是不是有一地啊,有异地,那肯定是从哪取呗,对不对?OK,好,现在问题来了,从里边取,咱们取几个分区呢。
29:42
啊,假如说我们现在的日期就是2020年的六月14,对不对,没没问题吧,那你六月14的时候,你往ND表里取,呃,算你得算什么东西,得算截至6月14号的最近N天吧,没问题吧?OK,这个最近N天包括两部分,一个是七,一个30,对不对,那这个怎么拿呢?呃,那大家最终想到的可能就是先我先怎么算,我先分开算,我先拿一个最近七天的分区,我把七天的聚合在一起,那不就是最近七天了,对不对,OK,我再拿一个30个分区,我把30天的最近一天聚聚合在一起,那不就是最近30吗?
30:15
理论上应该是这样一个逻辑对吧?好,那假如我们现在就先分开去算,看看这个怎么写啊,那首先我们先算最近七天的,我这加一个标注杠杠7D啊好,那这个三克具体写应该这么写啊,首先select之后呢,From上面那个DS层的应该是trade TM ED啊对吧?啊,然后呢,我们需要拿到截至六月14的最近七天,那这个应该怎么过滤呢?应该是DT得大于等于吧,对不对?大于等于什么?七天前的一天的日期对不对?OK,我们这来一个这个萨完了之后呢,假定当前日期六月14对不对?OK,那之后呢。减几是减七还是减六啊,注意啊,我这个六月14指的是我们现在数仓里边最新的一天的数据是六月14,那当然了,我们要算六月14的时候,是不是得六月15才能算下去吧?啊是际样,这个理解一下,我这个日期指的是最新的一天的数据的日期是14啊,也就是我们已经拿到14号的数据了啊,那我这应该减几啊,减六啊,这个这个能能绕开吧,画一下啊,这个14对不对,那13 12 11,十九八对不对,那这个是不是应该已经到了几天了,七天了吧,正好七天,这是八号,八跟14这不差六嘛,对吧,所以应该是减六,而我这儿也是大于等于,所以减六这个搞清楚啊,别算错了先,之后咱们怎么做呢?七天的数据是不是已经拿到了,对不对,然后是不是得把七天的数据是不是得聚合在一起啊对吧,好,那聚合在一起能不能直接写聚合函数能不能,不能吧,也得干啥才行,也得分组吧,这个按什么分组,也得按照是不是品牌进行分组,这个。
31:49
大家能不能想明白为什么应该能想明白啊,咱们要知道啊,就是这张表咱们拿的是什么,拿的是他的七个分区对不对?好,那你这七个分区当中,你计算了什么信息,你比如说咱们以A品牌为例啊,你在第一天的时候,你是不是算了A品牌它有多少多少多少对不对?那你第二天呢,是不是也有A品牌多少多少对吧,你第三天你也有它,那你把这七天的数据拿回来之后,你不得把同一个品牌这七天的结果聚合在一起吗?
32:15
对不对,OK,那所以在这儿呢,咱们得怎么做,你还是得按照品牌分组,那当然得俩字段,一个是品牌的名称,一个是品牌的诶ID对不对,好拿过来,拿过来之后呢,我们上面就开始选了啊首先第一个是t m midd,然后第二那个是t m name,那之后呢,是不是可以开始去计算我们所需要的这些质量,对吧,第一个是什么O尔count,那我们就怎么做就行,Sum求和对不对?来一个哎,比如说order count,哎,Co没问题吧,然后呢,再往下走,第二一个是什么?第二是那个呃,U count对吧,那你就是不是找到那个u to呀,对吧,来,我们来一个U,诶下线count,然后再往下呢,该那个建出了对吧,我们就来一个order,是不是number啊对吧,然后再往下,最后一个是什么,是不是该那个金金额了呀,对吧,那就来一个order是mark呀,对吧?好,那这样一来的话呢,我们是不是就已经拿到了我们所需的这些数据了呀,对吧,这个是不是看起来相对来说很简单对不对,很简单啊,相对于比较简单啊行,那这个完成之后,我们再继续往下走,那也就是现在7D的指标,咱是不是就算完了他算。
33:16
来说下一步咱们做啥,是不是改成30了呀,对吧?OK,那30怎么算30我觉得是不是不用说了,只需要把这个分区调整一下就行了,对吧?改成29,你把29天的聚合在一起,那不就是30了嘛,呃,把把30的这个聚在一起,不就是最近30了嘛,对吧?啊,就这个意思啊,所以这个呢,咱们相对来说,呃,也不难,OK,好,那截止到现在7D和30咱们就都算了,算完之后咱们怎么去处理它啊,各位同学接下来怎么做?你这这是俩紫查询嘛,你是不是得给它拼接一下啊,对吧?那拼接的话咱们用什么拼接,用John吧,应该用John对吧,你要知道咱们现在是怎么去设计这个最终的表呢?啊,你是一个品牌,它的七天的结果和30的结果是不是位于一行啊对吧?那所以说这得知道哪写,那用谁知道呢?用t m midd是不是作为连接条件就行了,对,这个比较简单,所以这个我就不再写了啊,相对是比较简单的,那咱们只需要怎么做就行了,只需要呃照一下,然后呢,上面再选一下就完事了啊,我就不再写了啊好了,那完之后这个数据状载好像就已经完成了,对吧?诶,但是完成之后大家有没有一个想法,就是这个东西咱们能不能稍微的优化一下,有没有优化的空间?
34:23
有没有优化的空间?他说有没有。其实理论上应该是有的啊,为什么你想啊,你你看啊,我在算最近七天的时候跟算最近30的时候,咱们是分开算的,对吧?你算七的时候,你拿了这张表呢,最近七天的七个分区,你算最近30的时候呢,你是不是拿了最近30个分区,那你在最近30个分区里边包不包含上边那七个分区呢?包含对吧?既然包含,那你说有没有可能?哎,我只拿30个分区,哎,就同时把七天的跟30天的都算出来呢?有没有这种可能性呢?有没有可能性?呃,应该是可以的啊,那这个怎么写circle,关键是光说可以不行,你把circle写出来对吧,怎么写circle。
35:07
这么写,其实这个很简单,我只要把这个写出来,大家已经就明白了啊来现在呢,我给大家看一下我这怎么写的啊,来我这这么写,呃,但是我还是拿30个分区对不对,然后呢,我只需要在这儿呢,我给它补上几个字段就行了,那怎么补,首先我这么写啊,我来一个sum,还是求和,只不过这回求和呢,我不直接求和了,我怎么求呢?我有条件的求我来一个sum里边嵌套一个if if,那我什么样的,我算什么样的不算呢?对,时间位于最近七天呢,我就算你在最近七天外的呢,我就不算,哎,那这样一来的话,是不是应该是能够拿出来咱们这个最近七天的呀,对吧?那怎么写,具体就这么写就完事了,应该是sum if dt,哎,它是不是只需要满足我们上面的这样的一个条件就行了,对吧,课程C拿过来,它应该是大于等于,当然这个我们应该是让它大于等于几啊,是不是减减六啊对不对,没问题吧,这是位于最近七天,是这个道理吧,OK,那我就怎么办呢?我就比如说我把那个o or DR count给它拿出来,否则的话呢。
36:12
哎,我就给他拿个零。诶,那这样一来的话,我是不是拿到的就是最近七天的这个下单的次数才对吧,是有是这个道理吧,诶这个具体的原因,这个具体的原理是什么样的,其实很简单啊,那首先我们比划比划啊,首先我们在这儿是不是拿到了最近30天的30个分区的数据啊,对吧?然后这最近30天里边有最近七天的,也有最近30天之外的,也有最近七天之外的,对不对,然后我们这儿相当于做了一个映射,先做了一个映射,做了一个什么映射呢?如果你这个日期位于最近七天内,好,我就直接把你那个值给你拿出来。这个没问题吧,如果不位于最近期内,对吧?你位于最近七天之外,那我就给你映射成一个什么东西呢?零全部映成零对吧,之后再对它映射的这个值是不是进行求和呀,对吧?好,那相当于最近七天呢,我就真正的进行了计算,其余的呢,我是不是都按零算的呀,对吧,按零算那就相当于没算了,哎,这样一来就能够拿到最近七天的结果了,OK,那这个完成之后,我们CTRLDCTRLDCTRLD,我把其他的几个字段是不是也可以按照相同的方式给它计算出来啊,对吧?那这个呢,我们称之为是相当于有条件的求和,对吧?来,CTRLC拿过来这个呢,拿过来那行,那这样一来,我是不是就同时拿到了最近七天的统计结果和最近30的统计结果来,对吧,而且你要注意我这儿还省了一个什么操作。
37:28
还省了一个照吧,对不对,你这门要分开求是不是还得先还得再照一下对吧?哎,我这儿呢,诶既少查了一遍数据,然后呢又少照了一次,所以这么写肯定要比你分开写要好得多对吧?好,所以上面这个呢,我们就不要了,直接给它删了买删除,那咱们留这一个就行了,好了,最终我们就把这个结果得到了,下边是需要干啥,是不是in色那边对吧,我们需要iner的or right dwd啊DWS,然后呢是交易域的,呃,这个t trade,然后呢是是哪个表,是ND表对吧?那我们需要放在哪个分区里边的哪个分区应该是。
38:02
14号分区吧,为什么14号分区,因为咱们得知道你现在算的是什么,你算的是截至六月14的最近N天吧,对不对,那至哪一天的最近N天是不是就应该放到哪天的问句对不对?所以DT应该等于2020杠零六杠幺四,好,那截止到现在,那这个表的数据状态宇宙就算是写完了啊OK,那这个完成之后,视频我给他停一下啊。
我来说两句