00:00
那咱们现在来讲数据分析啊,那么咱们首先看一看他的说明吧,他说了我们的数据已经完整的采集到了我们的h base集群当中,那么这次我们需要对采集到的数据进行分析,统计出我们想要的结果。那么注意在分析的过程当中,我们不一定会采取一个业务指标对应一个map job的方式啊,如果情景允许的话,我们会采取一个map分析多个业务指标,说的简单点就是有一个map把多个我们的数据给它生成出来,来统计我们的结果啊,而不是说我们的一个map只能统计一个结果,不是这样的,可以同时统计多个数据啊。然后呢,我们具体采用哪种方式呢?要看我们实际的业务场景了啊呃,接下来我们看看我们的这个流程是什么样子的,首先咱们现在的数据在我当前的这个位置已经有了啊,已经有了,有了以后咱们要通过我的map,然后呢通过延安的方式,然后呢往下。
01:00
来传递啊,往下来传递,那这个时候呢,它会往下走走就走到我们的买SQL当中,诶就是这个意思。所以啊,这是我们接下来准备要做的,从我们的s base把数据放到MYS当中,但是这个放并不是纯粹的放,而是统计完之后将结果放到买车库当中,诶是这么一个过程啊,好了,然后呢,他下面就说了,我们的业务指标都有哪一些呀,你想实现什么样的功能啊,首先他就告诉你了,他说用户每天主教通话的个数统计,通话时间的统计,就意味着你在买SQ当中,我们某个用户他在每一天的通话的次数,每个月每一年的通话的时间,这些信息我可能都想得道,通话时间啊,通话次数我们都想知道啊,然后呢,每个月啊,通话记录,通话时间,每年诶都可能会统计出来啊。然后下面呢,是用户之间的亲密关系,你给哪一个用户打的多啊,打的次数多,诶这些东西我们也可以体现出来啊,所以啊,在这种情况下,业务指标是比较多的,比较丰富的,你就要想办法把咱们现有的。
02:08
数据给他统计完以后,满足他的需求,那好了,咱们别的不说,咱们现在呢,就得想办法什么在我的满circlel里面创建对应的表了,你创建对应的表,然后呢,这些表中的数据能够满足我的业务指标就可以了啊所以啊,咱们首先呢,咱们先来分析一下,所以我们这里呢,打开我的这边啊来我们写上这里呢,我们创建一个word文档啊,咱们写上叫数据分析啊,咱们写上叫数据分析啊嗯呃,我想想这个咱们改个名字吧,嗯,把这个呢,咱们改个名字,嗯,这个写上我们一个啊来,嗯,咱们叫零一啊,然后那写个。然后呢,这个呢,是我们之前讲的啊,咱们零二,嗯,然后呢,这个呢,我们写个零三,嗯嗯,好了啊,那现在呢,我们把这个打开啊,前面的数据生产呢,数据的消费都是咱们之前学过的,相对说简单,咱们就没有写文档,那现在呢,我的数据分析呢,咱们要写一写了,为什么呢,我要分析它的表是什么样子的,我的数据能不能满足我要分析一下啊,所以我们写上咱们叫数据我们的分析啊,就是这样,那首先我先来看一看买S当中我需要什么样的表,能够把我们的那个数据保存好了,按照他刚才的这个说明啊,就是文档当中的说明,他是这么说的啊,所以呢,把这个打开,打开以后,它这里面有这样的一个描述啊来他说了,呃,我看看啊,咱们数据分析在这个位置,他说了是用户每天主教通话多少个,其实也不能叫主教了,就是你被只要是你的通话都应该算上啊,所以在这种情况下呢,我们首先要一张表,这张表当中应该有个用户的概念。
03:55
所以把这个呢,咱们拿过来,嗯,拿过来以后呢,我放到这边,然后放过来,那首先我得有个ID啊,咱们的表呢,就有个ID,嗯,ID这边有一个叫什么呢?叫做我们的ta电话号码啊,谁打个电话诶这个我都知道,然后呢,后面那电话号码就能确定这个用户了,所以我拿电话号码是可以的,接下来干嘛呢,我都想知道啊,你是什么时间打的呀,所以我应该有个什么呢?Date啊,比方说2018年十月份,2018年11月份,我就有这么个东西啊,然后呢,有了它以后,接下来是什么呢?
04:30
统计的结果了,统计的结果第一个是我们通话的个数,就是通话的次数,所以呢,这里呢,应该有个什么东西呢,叫上求和,求什么和呀,就是通话的次数呗,所以count啊,就是把那个什么和给它计算出来啊,通话的一个次数啊好了,那接下来我们,诶我们说就什么就要call吧,S call啊就是你打电话的次数啊,但是你光我次数还不行,我还得知道你的通话的总时长,你给这个人打了好几百分钟是吧?哎,我就知道这么个事情,所以啊,我这给孩子有一个叫some Du,诶一个通话时长的一个统计,那这样的话我就明白了,哦,原来我的这个月份呢,打电话挺多的呀,是吧?诶写个一,那这个地方呢,可能就是133,那么133的话,比方说2018年的什么十月份,然后呢,我这边可能啊,打电话打了十个,打了十个以后呢,这个是按秒来算呢,可能是打了1000秒,诶就是这样啊,那么这样的话,我的数据就出来了,就希望达到一个这样的一个结果啊,但是我这个结。
05:30
我能有点问题,为什么呢?因为他这个地方呢,有每天有每月,还可能有每年呢,那所以说我逛这一条数据不行吧,所以我这边的统计还不能说只对那某一月来做统计,那可能我这边应该还有比方说二,这个二是什么呢?幺三,三还是这个电话这个用户,这个用户呢,在2018年什么,诶幺零幺零十月十号这一天,他打了一个电话,然后呢,打电话的时间呢,可能是100秒,诶我这样的话呢,给他记录下来,或者说你打两个电话打了什么呢?150秒,诶这也有可能这样,我这个也想统计出来,但是你这么统计的话,它是什么呢?它是我们的天和我们的月,那我可能还要统计这一年呢,所以写个三啊,那么三以后呢,133,然后呢,写上我们写上2018 2018的话呢,这样可能就多了啊,比方说50个电话或者40个,那么你打的时间呢,可能就是5000了,诶好,那这样的话呢,我们把这个统计拿到,那我一查询。
06:30
就非常快了,马上用一张图表的方式把我的数据展现出来,所以啊,这种数据的方式应该能够满足我们刚才的需求,嗯,好了,那我现在咱们这个地方呢,已经有了啊,咱们接着呢往下看,下面就是我们上面这两个业务指标啊,这两个条件我们都能够满足了,那么下面是什么呢?用户之间的亲密关系,那这个我们应该怎么办?这个你能看得出来吗?这个不行吧,哎,所以啊,在这个呢,我们写上叫通话啊,咱们叫通话信息统计,咱们叫通话信息统计啊,统计的一张表,这个表的目的专门是干这个事情用的啊,所以把这个给他拿过来啊,好了,那你这个拿过来以后,现在我要满足另外一个业务要求的话,这张表是不是不够啊,这张表不够啊,那怎么办呢?所以我这里把它往上放,我们应该来一个叫做什么呢?通话的什么通话,嗯,我们的亲密度啊,咱们叫亲密度啊,啊统计表,那所谓的亲密度是啥意思啊是。
07:30
你打电话给某个人的这个统计结果吧,那所以我们这里是应该把它再拖过来啊,对不对,拖过来,拖过来以后同学们想想,那我这边应该怎么做统计啊,怎么做统计,首先电话号码他133这个我得知道吧,谁给谁打我的知道对不对,那么然后呢,应该我们这应该再加一个吧,加一个我们叫tell的什么,比方说一和二吧,哎,就这个东西啊,就是我们的,诶把它拉长一些啊嗯。
08:01
好了,然后呢,把这个呢往后挪啊好,那这边我比方说144啊144OK,那我问你后面这我要不要。要不要我们是不是也得要啊,我想看看我给张我给张三在2018年我打了多少个电话吧,或者说我在什么呢?诶2018年的十月份打多少电话,是不是也可能会查呀,对不对,这可能会查一个月我打多少个吗?啊,你的这个什么个数越多,那说明我们的亲密度越高啊,肯定是这样的,你说我全年就打了一个电话,然后就打了一秒钟,你跟我说亲密度高对不对啊,那肯定不可能,那所以通过这样的指标可以得到我想要的结果啊,所以我们这里面也就意味着他跟我们前面不一样的呢,其实就是我们的多了一个电话号码啊,这个呢是用来查我自己的,那这个呢是用来查某一个人的啊,是这么一回事儿,所以把这个呢,咱们加上啊,啊就这样,如果啊,你要觉得说啊,我们的指标太细了,那也可以不按天啊,天少点,就这一个月,这一个月当中我给哪一个用户呢,打的更多一些,我这样的话也可以啊,因为每天的话可能就有点太多了啊,所以月份年份诶这么做也是可以的,所以啊我们把这个表。
09:11
创建出来以后,这两张表的数据应该能够满足我们刚才文档当中它的要求,最起码呢,什么亲密度啊,我们的通话信息啊,诶这些统计信息我们都可以得到,好了,那这个呢,咱们先做是吧,就这么做,那咱们到时候呢,就先把这个咱们做了,这个呢,我们到时候做都一样的,为什么呢?因为这边都有的话,这边就是把这个数据统计出来就可以了啊,所以啊,咱们首先先把它做了,但你要把它给它做的话,那么这时候我们要考虑一件事情什么呢?数据的查询效率问题,就是我在做之前呢,我就需要考虑一下,那么对于我们关型数据库来讲,它的查询效率是由几个元素来决定的呢?就什么样的因素来决定的产生效率呢?首先索引吧,对吧,那我们索引,那么我们这个索引的情况下,同学们想想啊,我们是不是可以这是组建,把IDID组建,那没什么说的,那我们还应该对什么加索引呢?
10:06
还对什么加缩银,是不是应该对我的电话号码和时间呢,对不对,为什么?因为我们真正查询的时候,是不是我们是以某一个电话号码在某个时间去查去啊,诶这是比较常见的查询方式,所以我们还要对它组合索引,合在一块儿键索引,那这没有问题,这也可以,还有还有没有别的地方可以提高我们的效率呢?还有一个就是存储啊,数据存储,你还记得我们给大家讲s base的时候,我们讲过宽表和高表吗?你的数据每一行越多是不是查的越慢,你的数据量越大,是不是查的越慢,诶就是这样,但是我们你会发现我们这边你会发现我们这不是宽表吧,为什么呢?字段不多对不对?基本上也不会去再去加了,因为我们的统计结果都有嘛,所以基本也不会加了,那我的数据总量会不会很多呢?会对不对,但那没有办法,为什么呢?因为我们就得这么做,对吧?但是我们能够改善的是什么呢?是能够改善的是我们数据当中的存储。
11:07
存储的值。什么意思啊,你一个数据你存十个字节跟存一个字节哪个能快点,肯定是一个吧,对不对,因为呢,他在底层读取的时候,就读一个字节就完事了,你要读十个字节,它就把十个字节放到内存当中,那这样的话,你能读的数据就少了,所以啊,我们的数据越短,它的查询效率一定越快,可是同学们会发现,你会发现我们通话信息统计表当中的这些数据,它有重复性,有冗余,什么意思?电话号码大家想想就是我这个东西啊,是不是我这一年当中的所有的每一天数据,我都会把我的电话号码写上,那也就意味着大家看我144,我这么写啊,144你会发现什么现象,是不是一模一样啊,它一模一样的话,这样的话,字节数就是从11个吧,十一来乘以你的数据条数对吗?那这样的话就太多了,我能不能从数据的大小的角度来改变它呢?比方说我希望你短点。
12:07
那怎么办?我希望你短点,你不要太长了是吧,你太长的话,你的存储容量就太大,容量大了以后我查的就会慢,所以在这种情况下怎么办呢?我能不能给它变一下什么意思,同学们看啊,来,我把这个地方呢,来啊,把它挪一下,把这个挪一下以后,把这个表我再我再加一张表,我再加一张表,这张表就太简单了,为什么呢?它这边就是个电话号码,然后这个呢,我写上咱们叫做什么呢?张三,然后这边我写个李四啊,我写个李四,然后这边呢,我写个王五啊,我写个王五好了,写完以后呢,这个呢是我们的什么呢?166啊,这个呢是我们177,好,那同学们想想,如果我有这么一张表的话,那是不是意味着我这就不用写那么长了啊,我写多少就可以了,我只要写一是不就行了,那这样的话从11个字节是不是就变成一个字节了,这样的话它的存储容量是不是就变小了。你数据越。
13:08
多,但你的总量不会很大,对不对啊,就是这样,因为什么呢?就这个ID嘛,你ID就是一个值呀,它能有多大呢?诶,所以总量不会很大,所以啊,我们用这种方式是可以的啊,那你这个呢,没办法,你有多少个用户,应该存多少个吗?这没什么可说的,而且我们这个名称和电话号码是关联上的,这么做也没有问题,所以啊,我们刚才的那个呢,是什么呢?是我们的通话信息的统计表,那这个接下来这个表应该什么表啊,应该是我的用户表啊,咱们叫做用户信息表。咱们叫用户信息表啊,然后把这个呢,我们写上就叫做什么呢?叫做tell ID吧,或者叫user ID,这都可以啊好了,那这个咱们有了以后,那大家想想,如果这个你能明白的话,那是不是我这个date也可以改善一下,为什么呢?因为你想想2018年十份有多少个用户就会有多少条这个数据吧,同样道理,我的2018是不是有多少个用户2018都要去写一遍,所以我这个其实也可以给他改一下啊,也可以改一下,咱们写上,咱们叫做时间,咱们叫日期吧,咱们就叫日期表啊,这个日期表呢,来,咱们放过来啊,嗯,放过来以后,那其实很简单了,就是我们的什么,呃,光date也不行,咱们这样吧,咱们叫做什么呢?Year。
14:24
咱们叫month啊,咱们叫做day啊,咱们叫做day,然后呢,把这个呢给它去掉啊,然后呢,我就写上2018啊2018,这个2018呢,就是一个完整年的统计,没有月份,没有日期,那这个呢,就是2018什么呢,我们写上,那这个我们写上是什么呢?十月份,然后呢,这个写上2018的什么10月10号,那我这里写个10月10号就行了啊。所以那在我们这里呢,我写个10月10号,同学们想想吧,那我这个日期表中的数据不会很多吧,为什么呢?一年一年有多少条数据,就是我们这个表里面年有多少据,300条是条啊,为啥呢?因为每按日期来讲的话,条是吧,对不对?但是你还要每个月暂还要加12条呢,每一年还要加一条呢,对不对?所以啊,378条对不对,你该这样,那么378你整个十年才3000多条,在我们单表的情况下,记住不超过几百万数据的话,买所有的效率非常高的,而且你还加了索引呢,所以啊,几千条这个数据不没事儿啊,啥事儿没有,既然啥事儿没有的情况下,那我这不就简单了吗?为什么2018年的十月,2018年的十月不就是二吗?
15:46
那所以我这是不是写个二就行了,或者写个二啊,同样道理,2018年的10月10号,那不就三嘛,诶这写个三就完了啊,写个三那这写什么东西啊,写个一不就完了嘛,所以说你会发现是不是我的数据就越来越简单了,对不对,就不会有很长的那些数据存在了,而且还不重复,那这种情况下不是非常好吗?啊,数据越短,查询效率越快,肯定是这个样子啊,所以在这种情况下,我们的表呢,就应该有三张表,这个表咱们先不考虑啊,咱们就先把上这张表先给它搞明白了,所以我们有三张表,那有三张表的情况下,我事先呢,我就在我的这个买SQ数据库里面,我就建了两张表打开。
16:27
打开以后,这个叫CT180808,就是我建好的一个买车会的数据库的表,这个表里面有两张表啊,这个库里面有两张表,第一个叫U的,第二个叫date,那这个U呢,就是我刚才说过的那个电话号码和那个人名,这个呢,我事先呢就已经给他创建好了25条数据,这是我事先准备好的,这个跟跟我给你们的那个文件里面的数据是完全匹配的啊,所以这样的话,你生成的数据在我这张表里面是一定存在的,到时候呢,这个表的数据呢,发给你们啊,还有一个就是我的date,这个date呢,是我们378条数据,那么里面就跟我刚才说的是完全相同的,里面的2018 20181 201811啊就这样,那所以在这种情况下,我们的数据都准备好了,那也就意味着现在我们只要干嘛呀,把咱们的这个数据统计出来是不就可以了,统计完了以后,你就想办法把我们的日期转换成我们的I。
17:27
D不就完了吗?所以在这种情况下怎么办呢?我们来,我们再创建一张表,这个表我们写上来,我们写上叫CT,然后呢,把这个地方咱们拿过来啊,咱们写上,嗯,咱们就叫通话吧,就叫靠吧,哎,咱们就叫通话的一个信息啊,嗯。然后呢,点击确定,点完确定以后呢,这个ID组件组件保留啊不动,嗯,好,接下来下面下面是什么呢?就要按照我刚才的说法了,比方说我们就叫TID啊,那个TID,那么ID既然是ID,它是组件吧,那么组键是不是应该是我们的整形啊对吧?是增长嘛,那所以应该是个整形,然后呢,点击确定好了,那你的那个电话号码是个ID了,你的那个日期应该也是个ID吧,所以我们的日期应该也是个ID,叫data ID,然后呢,这边它的类型也是个int类型,11位的啊,这个都跟组件保持相同就行了。好了,我们现在三个字段有了,然后呢,我还得加什么呢?一个叫通话的什么次数的总和,还有一个通话时长的总和,对吧?所以在这里呢,我们再来啊呃,这里我们写上叫some,我们就叫三扣吧,嗯,上扣啊,通话的一个次数,然后呢,这个次数啊,咱们也写个int吧,然后写个11位的默认值。
18:46
啊,然后给个默认之灵吧,嗯,然后点确定啊,然后呢,我们再来再创建一个新的,咱们叫咱们叫duration啊,就是我通话时长的一个总和啊然后呢,我们这里呢,也给他个int,嗯。
19:00
然后呢,这边是11位的默认值是零就可以了啊,点击确定啊,这个字面的含义和那个描述我就不写了啊,为什么呢?因为这个咱们这个字母呢,还是比较好理解的啊,所以我们的表呢,就是三张表,三张表呢,咱们刚才呢,给你们已经简单的分析了一下啊好了,这个。
我来说两句