00:00
之前我们给大家讲了一下udf函数么?所谓的udf呢,其实就是用户自定义的函数,那么可以对每一行中某一列的数据进行一些功能的扩展,对吧?但是呢,在一些比较常见的业务当中,其实聚合功能也是我们比较常见的功能,那比方说我们的circle当中的平均值啊,Count求数量,还有呢,我们的呃,最大值,最小值这些我们的功能,它都需要将数据聚合在一起来求得它的一些结果,对吗?比方说平均值,你着把所有的数据聚合在一起之后,求一个和,再取得它的数量,再取它的一个什么呢?我们相除的结果对不对?所以啊,就是这些功能都属于我们的什么聚合功能,但是这些功能不见得满足我们的每一个需求,那么有的时候我们就需要自己开发一个聚合的功能,对不对,那么首先在给大家讲这个功能之前呀,我们先说一下它的一个原理,咱们一块儿看一看来。呃,比方说对于我们来讲,大家看一下,在我们当前给大家准备的一个数据当中,咱模仿一下啊来呃,我来确定一下,咱们在这边诶有一条数据过来,呃,翻过来以后,比方说有个ID啊,然后呢,有一个name啊,有一个age,好,然后有个一,然后张三,然后30对吧,然后二写上一个李四,然后写上一个40,然后再来我们的三那写上王五。
01:24
啊,王五写上一个我们的,嗯,50吧,哎,写个50啊好了,我保存,保存以后大家可以看到,这就是我们现在的表的数据了。那如果你想取得它的聚合功能,咱们就以那个年龄的平均值为例,那是不是你要把第一行先取出来,对方同学们想一想是不是这样,所以啊,你首先第一个,你要先把第一行的数据先给它取出来,你是这样的啊,那我这里呢,为了让大家看着舒服一些,这样我们给它来一个啊,来放到这边。大家看一下在我的这个位置啊,来我标红一下,嗯,给他来啊,咱们标红。
02:00
颜色标红,然后透明度呢,给它变个透明度啊好了,那么现在的这个呢,就是我们现在选择的数据了,比方说我们要一行一行嘛,对不对,聚合嘛,那么我先是聚合第一行,那么第一行你要想聚合的话,首先第一个你得把年龄拿到,对吧,我们可能不关心它的这个什么名称啊,ID是什么,我们关心的是它的数量以及它的年龄,所以啊,你来这一条以后,你的年龄是30,那你得找个地方把它存起来,对不对,所以啊,我现在得找一个地方把它存起来啊,比方说来咱们就放到这儿,嗯。那这地方呢,假设就是一个缓冲区啊,咱们假设啊是一个缓冲区,那么我写上一个咱们叫buffer,诶咱们叫buffuff,一个缓冲区里面啊同学看一下,那我现在干嘛呢?我们里面呢,就得有个年龄吧,诶它里面就得有个年龄,这个年龄啊,它应该等于什么呢?30,为什么等于30呢?因为你的第一条数据是30嘛,然后呢,里面应该有个count,这个count应该是一对吗?它表述的是我们的年龄啊出现了一次,所以啊,它应该是这样的一个效果啊,这个呢,我觉得给它分开可能会好一些啊。
03:03
这是我们的第一条数据,诶,它从这个位置呢,诶过来了,好,这是我的第一条,那么我的第二条,同学们想一想,那是不是应该往下滑了,哎,就这道数据往下滑了,往下滑了之后,同学们想一想,那么这道数据就进来了吧,那他就进来了,他进来以后同学们想一想,那是不是就应该怎么办,他应该想办法把咱们的年龄应该更新一下吧,比方说40加30吧,所以他应该是多少,应该是70。对吧,没错吧,然后呢,下面的count应该是多少呢?应该是第二条数据应该一加一吧,所以应该是我们的一加一,应该是这样啊,这个应该是30加上40,应该是这么个样子啊好了,那我现在呢,如果第三条,第三条来了,第三条来了以后,诶第三条数据也进来了,他进来了以后,那么这个时候同学们看一下啊,那么我们的这个数据应该有所变化了,什么变化呢?应该是30加40加上我们的50,对吧?诶,这是它的数据,那么我的count呢,应该是一加一加一没问题吧,同学们应该就现在这个样子,所以啊,现在我的聚合功能到了这一步,最后一条已经聚合完毕,那么完毕以后你想得到结果是什么年龄的平均值,那所以它应该是有个结果的吧,所以它应该有一个结果,记住这个结果就是我们平均值啊嗯。
04:23
那这个结果是多少呢?这个结果不就应该是我们什么的嘛,应该是计算出来的吗?所以啊,这个颜色呢,给成一个蓝色吧,它应该是什么?咱们叫avg,然后呢,它应该等于30加上40加上50,应该是128 120除以一加一加应该等于三吧,诶,所以它的结果应该是什么?40,所以这是我们最终的结果平均值,这是我的数据,这是我的中间的缓冲区,用来做一些临时计算的,到最后来得到我们的结果,对不,同学们,这就是我们想要的一个我们的聚合功能,它的原理其实就是这样,把每条数据传到我们的缓冲区当中,完成聚合功能,最后得到统一的结果,就是这个意思,你把这个搞明白了,咱们接下来再去说怎么实现它的问题好不好,同学们。
我来说两句