00:00
同学们,我们需求三已经做完了啊,但是你发现呢,咱们刚才统计的那个页面跳转呢太多了,而且有些页面跳转可能我们还真是不怎么关心吧啊,比方说联系我们啊,比方说跳转到我们的首页,或者说从帮助页面跳转到首页,或者说跳转到联系我们,这种页面的统计好像对于我们来讲并没有什么太大的帮助,对不对?我们可能更关心的是一些关键性的页面,比方说从下单页面到我们的支付页面,诶,到底单跳是多少,从咱们的详情页面跳转到下单页面,这是多少,对不对?所以啊,关键性的页面我们可能要着重的统计,那否则你的页面太多了,就感觉不是很好了啊,所以呢,我们在需求当中啊,做一个简单的一个细化吧,啊,什么意思呢,就是我们来写上啊来。Todo啊,咱们写上,对啊,咱们写上叫做对指定的页面的连续啊跳转,跳转进行啊,进行我们的这个统计啊,就是指定的连续页面跳转啊,比方说我们的下单啊,到我们的支付啊,我们的详情到下单这种我们的连续页面讨论,我们需要统计,那咱们就举个例子吧,比方说我们写上啊来。
01:21
呃,我们现在需要的是什么呢?是我们的ids,就是我们需要的是这样的,比方说12345567,我需要统计的是什么东西呢?是这样的啊,是我们的一杠二,二杠三,然后三杠四对吧,然后呢四杠五,嗯,然后呢,我们的五杠六,然后呢我们的六杠七,所以啊,我们真正想统计的是这样的一个页面。啊,它的单跳转换,所以别的我就不要了,所以啊大家会发现这个呢,既然是我想要的情况下,那么我们在统计分母的时候,是不是就应该想办法把咱们多余的页面给它去掉啊。
02:05
否则你的数据量是不是太多了,你要了以后你的性能还下降对不对,所以啊,咱们在这个时候啊,先别着急啊去进行统计,我们应该先把数据我过滤一下对不对,所以呢,来拷贝,嗯,拷贝以后点我们叫做什么呢?叫做fielder啊咱们诶咱们叫做field,这个field就意味着什么呢?我要把咱们当前的啊来咱们写上叫做什么呢?嗯,这么写吧,嗯,咱们叫做action,嗯,好,然后反过来我要看一看这个ids里面点有没有包含,包含什么呢?我们当前里面的配置ID。大家想想是这样的吗?就是你当前啊,我们的配件ID在不在这个范围里面,如果在的情况下,你再去做统计对不对,哎,就是这样啊同学们,所以呢,我们这个field呢,咱们保留啊,咱们保留,然后呢,有了它以后,把这个呢给他拿到这儿来啊,拿到这儿来就等同于在咱们之前的逻辑当中,我加了一个什么我们field操作。
03:11
加了个field之后,然后呢,我们再做map,再做reduce,可以再做我们的统计变成一个map,所以啊,这个对象跟后面是完全一样,但是我额外的加了一个fielder,加了这么一句话啊好了,那我现在计算分母的时候,其实基本上就已经可以了,但是其实大家想一想,想想什么呢?其实我们还可以再优化一下,因为你计算分母的时候,一杠二,它的分母应该是一,二杠三,分母是二,三杠四分母是三,四杠五分母是四,五杠六分母是五,六杠七,其实分母是六,就意味着这个七号页面其实根本就不需要去统计。大家想想是这样的吗?就是你计算分母的时候,这个分母不可能是七,那该怎么办?那我是不是应该判断我们这个应该里面那个七也不包含在里面呀,所以说咱们该集合当中有一个什么这个东西叫in。
04:08
这样的话是不包含最后一个的,对不对,它不包含最后一个的话,这个不就OK了吗。大家还有印象吗?这个in net是除了最后一个以外的,咱们就叫in net吧,哎,就是这个意思啊。好了,那这个咱们有了之后,那是不是我们下面的这个地方,我们是不是应该也进行过滤呢?对不对,就是我们这个分子计算的时候,是不是应该也进行过滤呢?哎,我告诉大家,大家想一想,这个过滤是不行的。为什么呢?举个例子啊,同学们看,比方说我们现在呢,哎,一号页面到了九号页面,然后到了二号页面,然后呢,再去了三号页面,然后去了五号,诶,或者说去了八号页面,然后去了我们的四号页面,所以啊,这是我们的页面单跳是吧?这是我们的跳转,那么就意味着我们真正的这个统计应该是一到九,九到二,二到三,三到八,八到四。
05:03
但是啊,如果你这个时候进行过滤的话,大家看你把这个八号页面去了,你把九号页面去了,你的统计结果是不是就是一杠二,然后二杠三,然后呢,我们写上二三杠四啊,大家想想,那这个能对吗?这个并不是真实的页面跳转吧,所以也就意味着你如果在这个计算分子的时候,你一上来就进行过滤,那么你的数据统计就不准确了。那该怎么办?那肯定是当你排完序已经形成了真正的连续页面跳转的时候,再做过滤才是对的吧,所以大家看一下,其实你是不是到了这一步,完成了页面的连续的一个组合呀,所以我应该判断一下什么呢?判断一下我们当前,记住啊,咱们当前的这个里面,它是不是满足我们的要求,对不对,所以大家看啊,记住啊,应该在这个地方,在这个地方将啊,我们叫做什么呢?不。
06:02
合法的啊,不合法的数据啊,或叫做跳页面跳转页面跳转啊,咱们叫跳转进行过滤,那所以那怎么叫做不合法呢?那肯定是你的这个东西是吧,不在里面嘛,那怎么办呢?诶大家看一下,那我现在就得想办法来,咱们放过来,嗯。咱们写上点,咱们叫做S,咱们叫做点,咱们叫做jeep,那么这个je呢,我们写上,咱们叫IDs.Q。那么好了,这个时候点一下VR回车,这个就属于我们的,OK啊,咱们的flow的一个ids,哎,就是它,所以这是我们符合要求的对不对,我们的流转ID,那我就判断一下咱们的这个啊,来拷贝,拷贝之后咱们看看啊,同学们看看这个地方,所以呢,我们写上来,把这个呢拷贝过来,咱们叫做点,我们叫做fielder,那么这个fielder你拿到的是个tale对不对,诶拿过来,那我就要判断一下你的这个tale在不在我这个里面呀,所以把这个拿过来,但是好像我确认一下这个是浪类型的对不对,那所以说这地方我觉得叫个浪可能会好一些啊。
07:14
来,我这写上一个我们的long类型啊,好,然后呢,这地方呢,我们也写上一个咱们的long类型,嗯,行了,你这么写了以后来拷贝啊,拷贝完成以后,我们写上叫做点,看你是不是包含咱们的这个T,如果我包含了你的话,我就留下来,我不包含我就不要了吧,哎,然后我们再给他做一个map,你这样的话就是OK的。所以啊,咱们又加了一个field,只不过是在咱们把正确的这个页面跳转准备好之后,咱们再做的过滤吧,诶就是这个意思啊,好了,同学们,那我现在呢,咱们再来看一看,因为刚才的这个页面跳转呀,太多了,所以呢,我们这里稍微的做了一个改善,把需求又给它完善了一下啊,这样的话,我们可以关心我们的一些什么关键性的页面跳转好了,嗯,看看结果吧。
08:07
嗯,结果当中看看是不是跟我预想的这个是一样的啊,我们只保留这样的数据,别的数据我们是不要的。好了,同学们看我们这里是一跳转到二,然后呢,二跳转到三,三跳到四,四到五,五到六,六到七,没问题吧,同学们,哎,就是这样啊好。
我来说两句