00:01
好,我们来上课啊,呃,前一天的话呢,我们已经进行到了这个DWD啊,到DWS层这个数据的一个处理了。然后前面那个ods到这个DWD啊,已经完事了啊,这个前一层的话,我们主要做的是数据的采集和分流。对吧,然后呢,呃,里面呢,解决了一些问题啊,这个呢,我们当时是给大家一个总结过的啊,大家下去以后呢,一定要自己去总结。OK吧,把这个每一个点呢,都给他什么?呃,补充的这个丰富一些啊,就是我们都是怎么去解决的啊,用了哪些一种方式,我们可选的方式有哪些。你自己都把它总结出来。学成自己的东西啊,行,那个我们就不多说了啊,再来看一下这个这一层的处理吧,呃,DWD层的这个处理的话,我们主要还是围绕着你的这个明细层啊,就是你目前已经有了这个数据,然后呢,进一步呢,把数据呢再去做一个处理。
01:00
好呃,因为我们最终的话是想要把数据呢,写到一个就是o lap里面。啊,面向这个分析型的一个数据库吧,你可以这么去理解啊,面向分析型的一个这个存储介质啊,啊,那么数据写到它里面的话,我们就会什么,借助于它非常这个强大的这个分析功能啊,比如说这个聚合计算啊,统计计算,然后呢,帮助我们去这个对数据呢做出这个分析。是吧,但是啊,大家注意这个o lap的话。他虽然说有这个非常强大的这个分析功能啊,但是呢,它也有自己的一些就是不擅长的东西。嗯,什么东西不擅长呢?呃,就比如说我们去做这个表的一个什么关联操作。啊,我们去做一个什么这个招易操作是吧,这种操作他其实是不太擅长的。而且的话呢,有了这个op呢,根本就没有给你提供这个所谓的招引操作。能理解吧,啊,那这个时候你要去想哈,假如说我们最后出了一个指标对吧,出了一个图,然后这个图的话呢,我是需要什么用到这个多个表的这个数据啊,比如说我想用到你的这个order info这个数据,我想用到什么这个order detail这个数据。
02:08
那如果说呃,你是直接把这个order in for,这个all detail啊,是这个分开啊,把它写到这个o lap中的,那么将来你再去出这个指标的时候,他说来我需要用到你们两个表的数据,那你这个时候就会涉及到一个什么噪音操作。对吧,有的人他能做,但有了这个OIP呢,根本就做不了这个draw。是不是,所以这个时候我们要想的说,那我一定要把什么呀,把他不擅长的一些这个东西呢,提前给他做了啊,提前给他做了,然后呢,最后我们存到这里面的数据呢,就是能够什么直接拿来去做分析的数据。这样是更好的。对吧,好,所以这个的话,我们来反观一下我们这个DWD层啊,这个DWD层的话,其实我们主要就是以这个表为单位,然后呢,做成了这个事实的这个topic。对吧,然后呢,以这个什么日志的什么这个分类为单位啊,做成了这个什么对应的这个topic,所以相对相对来讲啊,他们都还是一个什么独立的。
03:02
啊,特别是我们的这个事实数据啊,他们都是这个独立的。好,那如果说你直接把它写到你的下一层了,那面临的问题就是我们将来在做分析的时候,那你就很有可能会涉及到很多这个噪音操作。对吧,啊,这种事的话,你一般就不交给这个o lap去做了,他比较擅长的是聚合分析,聚合统计。啊,做聚合计算这个是他比较擅长的,但是呢,你让他去做一些什么行查是吧,或者什么这个就是所谓的什么专一操作啊,这种操作他其实不太擅长,或者是有的压根就做不了。明白吧,啊,因此的话呢,你就要什么,按照你所使用的这个oledp啊,我们的话使用这个ES啊对不对,然后呢,去分析一下它哪些东西呢不擅长,然后呢,你在前面你要什么提前把它给做了。啊,但是大多数这个这个这个就是op啊,我们都不希望他去做一些什么专一操作呀,对吧,或者什么一些什么复杂的计算操作呀,不希望他去做,你要做的就是最后的聚合分析,聚合统计。
04:04
好吧,所以说呢,你就把这个其他的事情在这个前面就把它完成了啊,比如说我们DWD的数据,我再往这个就是DWS去放的时候呢,我要什么把这个数据呢,给它什么丰富起来。啊,因此的话,我们这一层呢,主要做的就是这个宽表,啥叫宽表呢?宽表就是你一个表中啊,你的这个字段特别多,对吧,那你这个这么多字段你都哪来的呢。啊,很有可能就是你的很多个表,然后呢,组合起来,我们把它放到一个表中,那你放到一个表中的话,就相当于我提前就把它什么装运到一起了,那你提前这个装运到一起以后呢,接下来在你的o lap里面,你再去做分析的时候呢,就特别好去分析了。对吧,啊,这就是我们这一层要去做的事情啊OK,呃,还有就是这个维度的一些关联啊,这个也是需要的啊。比如说呃,就拿你那个订单表来讲啊,订单表来讲out in。啊,那如果说呃,我们在这个后面统计的时候。
05:03
我们想去什么,按照你的这个,比如说性别吧,对吧,按照你的这个性别呢,去做一个分析统计啊,或者是按照你什么年龄对吧,或者什么按照你的这个什么,呃,地区信息对吧,地区来做一个什么分析统计。但是呢,我们发现啊,其实我们这个order info中啊,或者说那个什么order detail,它其实是不包含我们将来分析所要用的这个字段的啊,比如说你的性别,你的年龄啊,你的地区信息,它不包含。对吧,那这种情况下,你将来分析的时候,你就少东西啊。是不是,所以说呢,我们要干嘛呢,在这个数据啊,从你的DWD,然后呢,写入到这个DWS的时候呢,你就要什么呀。把你的这个维度的这个数据啊,从你的这个red中查出来,查出来以后呢,关联到你的这个数据上。能听懂吧,就是还是做成宽表啊,还是做成宽表,比如说你原来啊,你里面记录的是我们用户的ID对吧,现在呢,我再给你多加几个字段,比如说把你用户的年龄啊,用户的性别,用户的什么地区啊,都给你什么加进来,加进来以后呢,那我将来在统计的时候,我就能够用到你的这几个字段。
06:07
对吧,这是一个什么维度关联,好吧,说这个整个这一层啊,我们具体要做的事情呢,就是呃,重点要做的事情应该是两件事情啊,一个是这个维度的关联,还有一个就是多表之间的一个什么招新操作。啊,这是我们重重点要去做的事,好,但是呢,呃,它里面也有一些什么,很多这个就是边边角角的一些东西,比如说呢,我们可以什么提前考虑做一些什么驱动操作,对吧?啊然后呢,做一些什么比较复杂的一些什么计算操作啊,那可能你需要什么提前做一些什么计算啊,算一些你的数据或者什么算一些什么格式呢,做一些转换什么的。等等一些啊,就是你都可以什么把它加进去。啊,所以说这个就是哦,看你这个将来具体要做什么事情啊,他是没有一个。这个相对标准的一个答案的啊,没有就看你要做什么事,然后你就。
07:00
加到你的这一层去做就完事了,而且的话呢,呃,我们将来要做什么宽表啊,这个其实也是有讲究的啊,并不是说我这个所有的所有的这个DWD的城市数据呢,我都要什么去做一个这个宽表啊,这个不一定得看你这个将来用不用啊。呃,像我们这个项目的话,我们就举了两个例子啊,一个是这个日活的,一个是这个订单的。啊,当然呢,你你将来你可以什么做其他的啊,对吧,我们就不可能说把这个每一个都给你拿拿出来做一遍啊,这个还是很费劲的啊,因为你的每一个宽表,我们的什么单独去做,它很难做成一个统一的啊,基本上都得单独去做,因为你的不同的宽表,将来你所做的这个分析,或者说你所什么对这个数据的要求呢,都是不一样的。啊,有的要去虫,有的不去虫。对吧,啊,有的要什么提前关联,有的不关联啊,都不一样,所以说你的基本上你的每一个这个日活啊,那什么日活每一个什么这个宽表啊,我们都在什么单独去做。好呃,那我们举的这两个例子的话呢,基本上就可以把这一层,我们所有能涵盖的这个东西呢,都基本上涵盖进去了。
08:03
就说白了,你将来比如说你再做一个其他的款表啊,基本上也逃不开,哎这两种处理方式。好吧,所以说大家要什么通过这两个任务啊,然后呢,把就是宽表这个宽表层嘛,之前你要做什么事啊,都把它这个掌握到,那将来比如说你换一个宽表,你也知道我要怎么去入手啊,怎么去处理数据,最后呢,把这个宽表给它做出来。OK吧,行,这是我们这一层的一个,呃,处理的一个概要啊。好了,呃,那接下来的话呢,就是来到我们这个具体的这个任务里面啊,我们暂时做的是这个日活的这个宽表啊呃,这个日活宽表的话呢,我们已经做了一部分了啊,我们再来简单看一下吧。呃,日活宽表,我们将来主要是为了去统计一下这个日活相关的这个指标,比如说我们想去做这个日活的这个叫什么呀?叫这个分时的一个什么趋势图。对吧,就首先我要去统计一下,到目前为止啊,就到今日啊目前为止,然后呢,我们总共有多少个这个访客。
09:05
OK吧,然后再一个就是我们要想做一个分时的图啊,什么样分时图呢,就是每一个小时哎,多少个人,每一个小时多少个人啊,到了某一个小时的多少个人,然后呢,你把它呢,描成一个线啊,这样的话,你就可以能看到一个什么折线图对不对啊,你就能看到这个数据的一个什么变化趋势。啊,那你做的好一点的话,比如说你可以怎么做上两天的啊,今天和昨天的,然后他们之间你可以怎么做一个对比。能明白吧,啊做这个事儿啊,还有一个是什么呀,就是按照这个不同的这个维度,然后呢,做一个就是日活的一个什么统计,比如说呃,你这个按照渠道来去什么做这个日活的统计啊,都有哪些,都都有什么这个多少个人是吧?啊这也可以啊行当然啊这个日活呢,还可以什么做很多很多这个需求。啊,这个只只是我们举了两个例子而已,啊行,那我们为了去做到这个效果呢,那我们就是什么提前去准备你的数据啊,这个准备数据的话呢,主要就是基于我们的就是DWD层的一个谁啊那个配置就是那个配置log topic对不对啊,就你的页面访问啊,他的那个topic,我们基于这个数据呢,来去做你的日活。
10:13
OK吧啊呃,那在这个整个任务中啊,我们会遇到的功能有哪些啊,首先第一个呢,就是这个驱虫的一个操作。就你的数据呢,你是需要什么周去重的,因为你统计的是日活对吧,那么当然我的一个人呢,呃,一天可能什么会访问你这个平台的访问N多次,那你要去想办法把这个N呢,给它变成一。对吧,因为统计日活,你一天访问了100次,对于我的这个日活数来讲的话,你就是个一对吧,因为你就这一个人嘛。所以这里面就会有一个什么驱动操作啊,你要把这个N的办法给它变成一啊对吧?好,然后呢,呃,第二个是这个维度的关联啊,这个维度关联一般我们都会有啊,一般都会有,因为毕竟我们前面是分成了这个DWD,还有什么这个DM的。
11:01
能理解吧,好,那么将来你在统计的时候,那很多时候你都会什么通过这个不同的维度,然后呢,做这个不同的统计,那你既然你这个将来最后统计的时候,你是需要用这个维度的,那你就什么提前把这个DWD和这个什么DM的做一个什么关联啊,关联成这个所谓的什么宽表。对吧,就让你的什么DW的数据呢,带上你的什么DM的这个信息啊,给它们关联起来。啊,这个一般都是需要去做的啊,像当然我们的维度有很多啊,维度有很多,你到底要关联哪些字段,这个就看你这个最后分析的时候,你要用到哪些字段了,你就把它关联进去啊,我们也不要说这个把所有的维度都给它关联进去。是不是啊,就是看你这个具体的用啊,你用什么我就给你关联什么啊。好呃,那这两个事我们具体的处理啊,最后的话呢,我们就把这个数据呢,给它写到这个olap里面了啊,这个写入的话,我们暂时还做不了啊,因为呃,我们选择的这个ES这个主架啊,但这个东西呢还没有讲啊,就是我们目前的话就先把这个数据呢都给它处理好,处理好以后呢,只差最后一步写入ES,我们就先停明白吧啊把这两个任务都是一样的啊,把这日后换表和这个和那个那个就是订单换表啊,这两个任务都是。
12:16
把数据呢,全部都处理好啊,就差最后一步写入了,对吧,那我们就先停一下,然后我们就转头去给大家讲讲这个ES啊,等这个ES学会以后呢,我们再回头把这个数据呢,给它写到ES里面。明白了吧,啊是这样的啊。就把它这个穿插到我们的项目里面去讲了啊呃,说这个写入ES,写入这个OIP啊,我们就暂时先不说啊,等到时候写的时候呢,再来给他去聊啊好呃,那我们这个任务的一些这个分析啊,或者这个功能点你知道以后呢,接下来就是动手干活写代码啊。那写代码的话呢,基本的这个消费数据大家应该都会写啊,消费大数据以后呢,我们目前正在做的一个事情就是这个驱虫操作,对吧?驱虫操作啊来再来把这个巨虫的呃思想给大家去这个说一说啊,我们把这个图打开啊。
13:10
啊,我让你们下去以后呢,自己尝试着把这个完成一下啊,这个不知道有没有同学能够把它写出来啊。好,一起来看一下啊。呃,那我们这个驱虫的话呢,我们是基于这个midd啊,就这个设备ID来的啊,当然呢,我也解释过啊,呃,也可以什么使用这个UID啊,就是它这个每个公司吧,它这个用的这个方式都是不一样的啊,你用UID呢也能说的过去,用midd呢也没啥问题。对吧,我们就使用这个了啊好,呃,假设呢,我们的一个m mid就是一个设备啊,今日的这个访问记录是如下。假如早上八点钟,我访问了一次。那我的每一次访问呢,我都有可能什么访问多个页面。对吧?啊,那大家想想啊,其实呃,假假设啊,他这个今天呢,就访问这么一次的话,假设他就访问这么一次的话,那我就要考虑诶,把你的这一次访问中,你访问过的什么很多个页面,然后给他什么,最后呢,是不是解决啊,或者什么给它过滤啊,过滤成什么一个就只保留一个就可以。
14:16
对不对啊,就我们先不考虑他这个,还有没有这个别的别的这个访问我们就考虑这一次。是吧,啊,那在你的这个每一次访问中,我们怎么就能够把这个数据给它做做一个过滤。啊,最后呢,只保留一个。是不是啊,那么在这种处理中的话呢,我们是分析到了啊,就是我们在这个每一个你的页面数据中啊,我们都有一个记录,有个什么记录呢?就是你的商业ID啊,商业ID就如果说你是从首页啊跳转到了这个登录页,那你的登录页里面就为什么记录一下我上页ID是一个首页。对吧,那同理呢,这个购物页呢,就会记录是他详情页的记录是他。对吧,那你要这么去推的话呢,那我的首页它的商业ID其实就是一个空的,我就没有这个商业ID,因为你是我的入口。
15:05
对吧,那你就找到什么,他们之间的一个什么不同点,就是除了我们的这个入口,这个页面之外,其他的页面中他们都是包含这个商业ID的。好,那我就什么可以什么通过这个条件。然后呢,把这个所有包含商业ID的数据给它过滤掉,我不要了,我只保留一个首页就可以了。对吧,只保留你的什么,第一个页面就完事了。能听懂吧,那么这样的话呢,我们就可以把你的一次访问呢,就过滤成了一个啊,所以这个自我审查呢,就是过滤到这个不为空的这个页面数据啊好,那我就什么留下来一个首页。啊,但是呢,我们还得去想哈,他这个一天呢,可能会访问N多次。对吧,一条我访问N多次绊示这个首页。是不是然后呢,这个呃,这这是第一次访问啊,然后还有后续的访问啊,这个我我应该是把这个调整一下顺序比较好啊,来后面下面看啊,下面看先看这你看一下啊,就假如说啊,这是我这个一天的什么另外两次访问,那么如果说按照你这个自我审查来讲的话呢。
16:06
那我是不是。把这个这一次的访问,哎,也过滤成一个页面了,把你的这一次的访问也过滤成一个一个页面了。对吧,就是一个两个三个分别代表你的这个三次访问。好,但是呢,对于我们这个最后这个日活的统计来讲的话,我要不了这么多对吧,因为你这个人我只要有一条数据能够表示你就可以了,所以说呢,我们还得想办法呢,把这几个页面呢,再次怎么做一个过滤。好,那这个怎么过滤呢?我们不可能说把他这个呃维护起来吧,把你这个人呢,诶从这个今天早上第一次的访问啊,一直到什么最后一次访问,都给你什么维护到什么内存中,然后等最后呢,我统一给你做个去重,这不可能的,因为这个跨度太大了。所以说我们当你来了一条数据以后,我就要什么直接去决定这套数据我要还是不要,那怎么做呢?我们就不能在你这个当前项目中的去做一个状态的维护,我们一般都会什么借助于第三方的一个主架,然后呢去做这个状态的一个维护。
17:02
好,你比如大概是这个意思啊,你的第一条数据来了以后呢,你经过你的自我审查啊,自我去重以后呢,保留了一个页面了啊,这个时候呢,我到你的red,让我去看一下有没有记录过我这个人。如果说你没有记录过我这个人,OK,那我就把我这个人呢给他记录进去,或者把这个设备ID给他记录进去,记录进来以后呢,那也就表示的这条数据呢,我是要写到olp中的,因为我得拿这条数据呢去表示这个设备。或者是表示这个人。对吧,那同理,你后续来的这个数据呢,也是一样的,你过滤完以后呢,你要什么,到这个ready去看一看有没有这个人,他一看说诶,已经记录过这个人了,OK,那这个数据呢,我就不要了。对吧,我就不往这个op里面去写了。明白吧,那下面的这个也是一个道理啊,我就不要了,不往它里面去写了。能理解我的意思吧,啊,这就是我们这个做这个数据驱重啊,我们应该怎么去驱虫啊,就是两个步骤,一个是自我审查的一个环节啊,再一个就是什么第三方审查的一个环节。
18:02
好吧,啊,大家把这个知道一下啊,行,那这个目前的话,我们把这个自我审查的已经做完了啊,做完以后呢,我们接下来就去做一下这个第三方的一个审查就是通过,然后呢去。帮助你把这个数据呢,做一个驱虫操作。啊,行。呃,那代码的话,我们就一会儿直接去写吧,对吧,就不再去说了啊,现在这个自我审查已经搞定了啊,我们也测试过了,它是有效果的啊,审查前数据是比较多的,然后审查后以后呢?呃,数据会什么变得比较少。但是呢,这个很少的数据里面,它还是有这个重复数据的啊,不也不叫重复吧,还是有这个就是同一个人或者什么同一个设备多次访问的数据的,那我们就什么需要这个通过第三方审查把它干掉啊,只保留什么,最后的就是一条数据就可以了。好吧,每个人只保留一条数据就完事了啊。行,呃,那就回顾这么多吧。
我来说两句