00:00
呃,那地区主题呢,咱们还是从DWS层开始说起啊,从DWS层开始说起啊,那DWS层呢,我们主要是啥呀。按按天统计吧,按天统计啊来,那咱们把这个粘出来。先把键盘语句放在这儿啊,CTRLC。来放在这儿CTRL位。好,那大家来看一下啊,看一下咱们这这几个,呃,这几个几这个几个字段啊,我们来看这几个字段,呃,首先呃先明确什么吧,先明确这张表当中啊,它的这个力度吧,啊,它的力度应该是啥呀?啊这边力度一行数据指代的就是一个地区吧,啊其实咱们那个地区表当中,我们一行数据指来的应该是啥呀,地区维度表里。能想起来吗?地区围六边的一行数据应该是一个什么,其实就是一个省份对吧?啊一个省份,那这张表当中一行数据,它所指代的应该也就是啥,是不是也就是一个省份当天的各种统计值啊,当天的那跟省份跟地区维度表示相关的事实,咱们能说有哪些呀?
01:02
有下单有支付啊是不是啊啊,当然还有啥呀,诶其实在这儿呢,我们也有这个登录,也有登录啊,那来看一看啊,先看上面这几个字段吧,从ID开始到reading name,这都是啥?这是不是也都是地区维度表当中的字段呀,什么省份名称啊,地区名称是不是都是维度表当中的字段,咱们也是给他拿过来了,这样一来就省的join了啊这个先明确,然后呢,看下边这几个统计值。一个是设备的活跃数,活跃设备数啊login count,那下边这个呢,是下单相关统计,这个呢是支付相关统计啊,这个都能看懂对吧,那现在呢,我们先看上边这个啊,Law count,你说它应该来自于哪。来自于哪儿?很显然,它应该来自于哪张表?啊,日志表呗,啊,启动日志呗,对吧?啊,那OK,往下走,那这张表是来自于订单为实时表,那这个呢,来自支付实时表,没错吧,很简单啊很简单,OK,那接下来咱们来分析一下啊,Login count,咱们怎么求,我们要求的是每个地区或者叫做每个省份的活跃设备数。
02:16
对不对,那所以咱们这个大家都知道我应该去哪啊,去DWD层的starlo当中去拿数据,这个都知道对吧,那OK,数据给你了,怎么求怎么求每个省份的啊,这个什么呀,每个省份的活跃次数。大家都知道啊,我这每行数据是不是就是一次登录记录,没错吧,那咱们要做的事应该是什么?是不是得按照咱们那个地区的字段进行分组,然后进行看的时候就完事了,对不对?关键是按谁分组,按谁分组,按省份,哪个字段是省份呀。啊,审核咱们应该从哪个字段里找,应该从咱们日志当中的那个公共字段里边找吧,因为公共字段当中是不是存储了一些啊描述性的信息啊,包括设备信息,包括地理位置信息,包括用户信息等等等等,对不对,那所以说这里边儿咱们应该从公共资源来找啊,那这几个字段是不是就是公共字段呀。
03:12
那里边儿谁是跟地区相关的呀,就是它area code。地区编码,这是我们国内通用的一个六位的地区编码啊,那前两位呢,在这表示的就是咱们的省份啊,就省份,那其实这个l code呢,跟谁是一样的呀。还跟谁是一样的呀,是不是跟咱们地区维度表当中的这个字段是一样的呀。对不对,它们俩其实是相同的,里边是相同的,那是不是l code能够唯一表示一个省份啊,那在这个位置呢,在咱们那个启动日表当中呢,是不是也是一样的道理,那所以说咱们这儿呢,要想统计不同省份或者不同地区的啊这个登录次数,那咱们应该怎么办?是不是应该是按照area扣的进行分组啊,啊,这是大家要注意的啊,行,那这个玩意之后呢,我们再来看下边order count和order amount,这个应该出出自于谁,肯定出自于咱们DWD层的fact order INF for吧,对不对,那这张表当中咱们直接就有一个啥。
04:14
直接就有一个province ID吧。它是不是正好对应的是咱们那个地区啊,对吧?啊,那我们这在这儿呢,是不是得按它分组啊,按它分组然后进行看看啊,然后呢,对金额进行求和,那咱们得到的是不是就是啊这个每个地区当日的下单次数和下单金额呀啊那对于支付来说是不是也是一样的道理,我们找到支付实时表DW def per for,然后呢,对地区ID进行这个。分组啊,Count就是次数求和就是金额,对不对啊,是这样的啊,那所以说最终我们来看一下它这个这个次数是怎么写的啊。来,我们从这开始站下来。
05:00
啊,CTRLC。哎,CR喂,好,那咱们来看一下啊。这边我们先看第一个子查询吧,第一个子查询咱们得到的就是啥啊,是不是按照every code分组,从哪张表里DW log去求啊,然后countt是不是得的就是每个,哎,Area,每个其实就是每个省份,就是每个省份的啊这个活跃次数吧,啊应该很简单,那往下看下边这个。看一下这个能不能看懂啊,首先从哪张表里读的实时表,订单实时表对吧?诶你看啊,他这个是不是也是从订单实时表当中把下单和支付的都给求出来了。对不对,那按照我们刚才说的,咱们是不是这个可以分开求,能不能分开求。能吧,这个从下单时时表,这个呢,从支付时表里是不是都可以,这俩是不是可以。没,没错吧,分开求可以吧,但是他这并没有分开求,他怎么求的,它是不是都是从。
06:00
这一张表里求的呀,对不对,你看它这一张表求这个求思路咱们能不能看懂啊,看一下其实应该也很简单啊,首先我找到这张实时表,然后呢啊,既然你要把支付啊,跟这个订单一起求啊,有是不是有支付,你今天支付订单是不是有可能来自于昨天,那所以他这是不是又过滤出来了两天的数据啊,对不对,一个十四一个13的啊,然后这次我按照谁分组,按照地区分组,那这样一来会把这两天当中的所有订单我进行统一的分组,注意是分的是两天的订单啊,把这两天当中的订单啊,同一个地区的分到一起啊,同一个省份的分到一起,没错吧?啊OK,你看啊,我们要求的是当天啊,这个每个地区下单次数和下单金额,所以说你看上面是不是得是下单时间等于14号我才给你算,否则我就不算呀。啊,对不对啊,那这是当这个14号的下单次数和下单金额,那下边这个呢。是不是支付时间等于14,哎,那那我就给你计数,否则我就记零吧,对不对,那所以说这个得到的也是,哎,咱们14号的,哎,下单和支付的次数和金额,哎,你这么求可以,或者你要不想这么求,你就按照咱们刚才的这个思路啊,你是不是写俩子大选呀,啊这个我按照订单去求,那这个呢,按照支付实表去求,哎那其实也能求出来,只不过呢,这种方式相对要好一些,我可以少一个子查询少一个之对不对啊,那个你还得需要再来一个紫查询,还得做好,那就是这点吧,就这点行,那这块结束之后呢,我们来看一下,下面还是怎么做的啊,是不是这样的三个两个紫查询对不对?那问一下大家啊,这俩子查询咱们写完,按照常理来说,它俩是不是应该撞到一起?
07:43
对不对,那关键问题来了,那按照谁照。他俩是谁照的?他俩是谁照的呢?它俩有相同字段吗?这个是啥?这个是area code吧?啊是不是那个六位的必须编码,那这个是啥?
08:05
是province ID是省地区维度表,那ID它是1234567吧,对不对,那所以这俩东西它能粘到一起吗。很显然照不照唤不到,虽然他们俩每个人都能够唯一表示一个省份,但是他俩呢,不是一个字段,不是一个字段,是不是就照唤不到一块啊?那问题来了,这个怎么解决这个问题?这问题答说可以怎么解决呀?怎么能召唤到一起啊,怎么着?啊,你看一下下边人怎么做的啊,往下翻,往下翻是不是select select哪select from。这是哪张表?DWD层的d province,这是不是地区维度表,是不是从先从这张表求,然后呢,让这两个子查询都和谁进行连接呀?都和这个维度表进行连接。
09:01
哎,是不是都是跟他进行left join呢?啊,都跟他进行left join啊,那跟他进行left join的时候呢,你看他们俩join的字段分别是什么?哎,T login t login是不是就是上面这个,它是根据哪个字段给他join的呀?是不是根据area code join。对不对,因为这张表当中,也就这张表里,咱们是不是既有ID也有error code的呀,对不对,那所以说让他分别哎,用自己的字段照就行了,那这个用error code,那这个呢,是不是就用pro ID join了呀,对不对,那这样一来的话,我们最终所返回的结果是不是就照唤到一起了啊,它是这么去做的啊,那当然呢,大家来跟我思考一个问题啊。那这个结果啊,这个子查询啊,谁like等等等等,它所返回的数据应该有多少条啊。有多少条,这个其实有多少行,我们其实应该能知道有多少行啊。是不是这张表有多少行我就返多少行,因为你是不是都跟他left round呀,能理解吧?啊,那所以说大家得注注得注意了,那这张表有多少行,是不是34行啊,那所以说那实际上咱们这个在select所返回的应该是什么呀,是不是就已经是一个全量的地区的数据了呀。
10:17
咱们全量是不是就是34条,那所以这个返回去也是全量的了啊,那这个其实跟咱们之前的DWS层的表呢,相对有一点区别。对不对,有什么区别,你考虑一下啊,我们其他的主题,那在DWS层的那个数据都是什么样的,比如说以用户主题为例,以U主题为例啊,那你DWS层只有什么样的用户啊,是不是只有当天活跃的用户?对不对,那你活动呢,是不是只有什么样的DWS层,只有今天诶被猜就是那个下单参与的活动,我是不是才会出现在DWS层啊,对不对,那商品也是一样的道理,只有你今天被下单被支付才会出现在DWS层,但是呢,咱们这张表,这张活动这张地区地区,呃,这个主题表,那他DWS层跟他们就不一样了,它是不是应该是一个什么样的呀,是全量的对吧,就是不管我这个地区今天有没有下单,有没有支付,我是不是都出现在最终结果当中的呀,哎,这是他这个结果的样子,那当然咱们这儿呢,这样也是可以理解的,为什么可以理解啊,因为你要知道啊。
11:20
认真认真听啊,你说咱们DWS层啊,不光DWS,咱们就说地区主题吧,那地区主题我最终我需要干什么,是不是也是需要做可视化展示的呀,对不对,那对于地区这种可视化展示,一般情况下我们以哪种形式展示啊,是不是做一个地图啊对不对,那你那个地图你想一想啊,那地图你要想给一个地图传咱们这个,呃,这个展示化的展示的数据的时候呢,你必须得把什么呀。必须得把每个省份的数据都给他传过去,就是即便你没有,没有的话,你也得传个啥,也得传个零才行,能理解吧,啊也就是说你这个得跟咱们那个可视化展示是有关系的啊,你给他呃做这种统计图的时候啊,那即便说呃,我这个地区是没有值的,但你也要给它一个零。
12:07
啊,也给他一个零,那所以说咱们为了方便后续做展示,那咱们这张表地区主题是不是必须得保证它是全部的这个订单,全部的地区它都得有啊,那所以在这儿呢,咱们跟前面是不一样的,那这个大家稍微注意一下这个区别就行了啊,这是关于这张表啊,行,那咱们就说这么多啊,那这里边我总结一下嘛,就是大家需要注意的事项有两个,那第一个呢,咱们DWS层这个地区主题也要保证它是得有全量的地区啊,全量地这个跟可视化是相关的,因为你展示的时候,你必须得把每个省份的数据都给它,它才能出一个完整的地图啊,这个大家得注意啊,那下一个呢,就是你去招的时候啊这块哎,怎么去join,因为我们上边是不是俩子查询我们的主件是不一样的呀,这个是I code这个pro ID,那它俩是没有办法直接join的,所以说我们在这呢,直接让他跟咱们的地区维度表进行这个左外连啊就可以了啊,主要注意这么多就行,其他的就OK了,行,那现在我们只差最后一个了啊,咱们来坚持一下,看一下最后一个。
13:07
啊,地区主题在DWT层的宽面。CTRLC转过来。来往下翻啊来吧,CTRV,好,那这就是咱们这个地区主力的表,那这个地区主题表呢,我们看一下里边我们有哪些值啊,有哪些值,这里边呢,我们上面这些维度字段,咱们就不再解释了,咱们主要看这个累计值,那累积值呢,大家也看到了,是不是有最近30天的对不对,也有什么样的,也有什么当天的对吧?还是那个道理,当天的其实是没有必要放在DWT层的啊,当天的没有必要,因为在DWS层是不是就有啊,啊咱放这放这咱们给他求一下就行啊,然后呢,咱们看一下最终的这个结果是什么样的。来,我们把这个粘出来,CTRLC。嗯。啊CRV来吧,我们一起看一看啊,那首先呢,我们先看这个old,那这还是同样的道理啊,新旧对比嘛,新旧对比这个初始化的事咱们不再多说了,跟之前都一样啊,金对比,那先把old拿出来。
14:04
啊,从这张表里把O拿出来对吧?拿完之后呢,那下边我们是不是得求new啊,对不对,那这里边咱那个new需要什么呢?那你需要什么,是不是得看你这边都有哪些值啊,对吧?我这儿我需要当天活跃的,我也需要什么样的,也需要最近30天的对不对?所以说你的new里边是不是既得包含当天的,也得包含最近30天的呀,对不对?所以说你看一下下面这个new是怎么写的啊,首先我们select是从哪张表里select,然后呢?From。是不是DWS层的地区统计表啊啊,DWS层的啊,那我们过滤出来的是多少天的数据呢?仍然是30天的,仍然是30天的啊,然后下边呢,我们按照谁分组,按照咱们地区进行分组啊,当然这边按地区分组,你会发现是不是按照好多字段分组啊,对不对啊,那虽然按照好多字段分组,但其实按照跟跟按照谁分组是一样的呀。按照ID分组是不是一模一样的呀,对不对,因为一个D区一行嘛,哎,它们之间都是相当是一个整体啊,相当于一个整体,只要ID哎是它那后边东西绝对都是固定的啊,所以说这个是跟格数YID是一样的道理啊,那为什么按照这么多字段分组啊,是因为咱们上面是不是要选这么多字段呀,对吧,你需要选这么多啊,那所以说这边你需要按照这么多一起分组,要不然你选不了啊跟语法相关,好那像在这呢,按照地区分组啊,按地区分组完了之后呢,你看上面啊这一堆你得到的是啥。
15:31
如果如果地区日期等于六月14,那我就返回对应的值,否则就返回零,那所以它得到的是不是就是14号的各种统计值,没错吧,那下边这个呢,直接对它进行求和,那你得到就是啥?是不是就是这30天的总的一个汇总值啊,一个累计值啊,那拿到了当天的,拿到了最近30天的,那接下来就可以进行对比了啊,你看上面怎么做的啊,来对于那些维字呢,对于那些维度字段,我们按照这个新的就用有新的用新的,新的没有用旧的这个原则去做啊,那下边这些呢,来看一下。
16:06
如果你new里边啊,你当天的只有,那你就用当天的值,否则就是零啊,就是当天当天没有下单嘛,啊就这个意思啊,那最近30天的也是一样的道理,最近30天有你,那我就是用你这个最近30天的值没有你,我就用零,是不是一样的道理啊,所以说这块呢,咱们也是跟前面重复的东西啊,不再多说啊,大致的结构就是这样的,好,那我把视频录一下啊。
我来说两句