00:00
郊区是吧,其实上海还蛮干净的啊,你知道北京那个咱们校区那边,呃,就蛮脏的,说实话啊,那个也是就北京的郊区就就跟上海真的是没办法比了,行,那我们来看一下,我们做这个数据的处理先呢,我们把它给他拿过来啊,把这个数据拿拿过来还是一样的,我们给他处理一下,嗯,这个东西我给他关掉,重新开一个是杠地分割的,没问题吧。好,你看苍老师跟宋老师是吧,冥冥之中是有天意啊,我也不知道是为什么,嗯,我看一下这个,我们把它取的叫什么东西,叫Bo就叫他呗,有时候就取这些什么表名啊,什么字段名啊,就很烦,当你做项目的时候,你就知道了,保存借出好,然后接下来呢,我们把这个表去见一下啊,就是说呃,这表语句呢,姓名星座血型对吧。
01:19
然后呢,加载数据的data对吧,叫什么post是吧,然后into table往那个post for这张表里面去放,然后我们就查一下来个的新from这张表,哎,数据呢导进来了,我看一下咱们的需求是什么东西啊。我们的需求呢,是要将。星座和血型相同的人归类在一起,也就放在一起,这个一看明显就把姓名拼接在一起,对吧,明显的就把姓名拼接在了一起啊好,那么我们的接表语句呢,在这等会呢,我们去拿这个数据,对吧,我还是给它放在这啊,这是所谓的建表语句,然后呢,这一块是咱们的什么数据,最后我们要什么样的数据啊,我也拿一下啊,我们把需求拿过来,相当于首先大家看啊呃,射手座A,白羊座A,白羊座B。
02:41
这个明显是同一行给他干什么,拼接起来的效果,然后这个大海纵这这然后是射手座A,射手座A它俩本来属于两行,然后呢,最后放在一行,明显的用了什么函数。
03:02
是不是udf函数聚合函数,而且它的聚合是不是先得按照它进行聚合的?是不是分组条件go by后面应该写的是这个整体啊,应该是一个连接的内容,对吧?所以我们先不用考虑后面是怎么出来的,首先是不是应该把数据,把每个人星座和血型干什么拼起来,是不是要做这个事情。这个能分析出来吧,因为明显的你先要拼起来之后,然后按照这个字段分组去做聚合吧,这个明显的是要用一个什么。聚合函数才能得到的,对吧?啊,因为它本来属于两行,现在呢,变成一行,这不就多进一出吗?这个所谓的我们要用聚合函数来做这个事情,对吧?好,那首先第一步呢,我们先做这个事情,将星座和血型干什么血腥了。
04:05
拼接在一起对吧,那这个怎么写啊,谁来的,我先把这个写一下。然后是不是姓名还得保留在后面,因为下面肯定还要用嘛,星座和血型拼接,那刚才我们说了这个怎么写啊。中间用逗号拼接的,既然用逗号拼接的,而且只有两个字段,我们写contact的位子,或者说con是不是一样的,因为都是三个参数对吧?都是三个参数,好,那我们就用con的啊,好了,第一个参数啊,星座在前,所以呢,我们先写这个星座,然后中间是不是一个逗号,后面是一个什么血型对吧?那这个字段我们取一个名字叫什么。小划线随便啊,就是不能因为后续肯定还要用,是不是还要按照这个字段进行聚合呀,对吧,所以你得取别名啊,你不是说到最后了,那接下来name是不是要保留对吧,因为聚合聚合的就是name from这个所谓的什么叫in for这张表。
05:11
没了吧,啊这样就行了啊,这个呢叫第一表好,那我们先把这个走一下,这个就很简单对吧,我们就把它两个字段呢顶起来了而已,A就达到了我们前面想要的这种效果,那接下来我们要聚合,但是这个地方聚合呢,是最后他要把它干什么。连接在一起再拼一下,那这个地方应该怎么做啊。首先对吧,第二聚合相同聚合相同星座血型人的什么姓名啊到一行,那所以说呢,我们先select先写好,这里面字段呢,我们不知道怎么查,但是我们知道一定是from t1表对吧?然后后面还得写一个group对什么东西是不是我们拼接的这个字段,那查询的东西怎么写,查询的东西第一个是不是他自己还在呀。
06:23
对吧,那第二个位置要怎么想。拼接的内容,我们要这个最后明显看起来是两个姓名的拼接的效果,我们要不然用con或者用慷对不对。这个没问题吧,最后肯定用这个,那这个东西contact或者contact with,它是聚合函数吗。它不是,它是一对一的对吧,它是将一行数据它变成一行,它可以拼接的是不是多个列啊,对吧,它不能说把行聚合在一起。
07:04
那我们要想拼接,又要想聚合,可以怎么做?大家看啊看看看啊,那第一个位置写什么是肯定是竖杠了,毋庸置疑对吧,你分割符竖杠,第二个位置呢,得写一个聚合函数,然后把什么内部放进来,它是不是返回值是一个什么。是不是一个数组对吧,他的返回是个数组,或者说咱们俩啊,我们简单一点,我们先干什么,先看这个。先看这张表,我们分开写啊,大家可能清楚一点啊,其实对于如果说你所有的函数都是UDF的话,就是一进一出,他可以嵌套的啊,它可以随便嵌到,如果说所有的函数都是都是一进一出的啊,它可以嵌套无数层啊,嵌到无数层。
08:10
我们先看它,这样的话,我们是不是把姓名放到了一个数组里边,按照相同的血型和星座把姓名放在一个数组里边,对吧?因为我们要保留原来的数据集,你用sum count平均数或最大值最小值求这个都不太合适吧,对吧,我们要保留原来的数据,是什么样子就要什么样子,所以呢,我们只能用什么把它所有的数据保留下来,那就用数组好,你看到这个最后呢,由这个数据集变成它是不是好写了对吧,就差最后一步了第二对吧,然后接下来呢,我select的还是一样的,还是这个姿态对吧,保留,然后接下来我们写的是con位子AWS啊,然后呢,这个地方写一下是竖杠逗号,然后写什么name a对吧,From这个什么TR表啊,From tr表,然后把T2哎,前面加个括号对吧,然后把T2整体呢拿过来,T2整体是不是它。
09:26
对吧,放过来,然后呢,我们把这个运行。这个地方其实就是说我们要把原来的数据完整的保存下来,而且呢还要用聚合函数,这个时候你就要立马能想到connect set或者说connect list啊,至于选哪一个,你要看要不要去。
10:13
对吧,你要看要不要去除,好好最后呢,就完成了我们那个小对吧,哎,按照相同的星座和学习,将我们的人民呢,拼接到了一起。啊,拼接到了一起,实际上刚才我们所说的就是说,只要你是udf函数啊,你可以任意签到,讲的是什么事呢?这二三这两步啊可以合并,合并就是说什么呢?我们可以C的这样写来,我把这个第2TR表给他拿过来。这个地方我们可以稍微改写一下,我们不这样做,这个字段不要了,直接在外面嵌套是吗?因为对于我们慷位置来说,它是一个UDF1对一的,这一对一的函数呢,是可以任意嵌套的,你嵌套多少层都可以。
11:16
啊,就类似于转大写转小写,我再给他转回来,大写又转回小写,你随意潜跑,因为它是优点,因为它不涉及到聚合什么东西,对吧,这个呢就完全可以合并到一起的,我们把这个来运行一下。最后的结果呢,跟我们想要的也是一样的,最后的结果也是一样的吧,啊就是udf呢,就可以去包谷嵌套这边,就昨天我们说的if函数跟if函数之间,昨天大家不是不是反应过来了,可以签到啊,跟这个一样的,因为if函数它也是一个什么UDF是输入一行,每一行数据呢,都给我们出来一个结果,对吧?啊,你要关注一下udf udf,还有我们接下来要讲的,可能要讲UDTF它们之间的区别,对吧,一进一出,多进一出跟一进多出,这个一跟多指的是行。
12:25
对吧,你要想一下经过这个函数之后,函数会不会发生改变,如果不变,一进一出对吧,那类似于some看的明显的变了吧,你之前是十条数据,我看了一下是不是就变成一条数据了,对吧,多进一出。对吧,这个就是聚合聚合嘛啊,很多数据聚合成一条,那不是聚合嘛,对吧?啊,但是UDTF我们还没聊啊,马上呢,我们就会讲到这个UDTF。
我来说两句