00:00
好,接着看我们那个行转列,这是什么意思呢?看一下啊,首先我们不看这几个函数,等会再来看,就这样,这是一些原始数据,我们拿一下我还是通过这个数据来分析。这样我们新开一个文件啊。先看一个文件,然后这个叫。就搁这这样的这样一个数据,然后他要干什么事呢?看他要的结果来,我也把它拿一下。大家一看就知道这要干个什么事了。就是你需要把这个星座,然后这个是血型啊,星座和血型拼到一块,拼成本来是两个列吧,两个字段,是不是你现在把两个字段拼成一个字段。拼成一个字的。第二还有一个不光是这个,还有一个是什么呢,就是。
01:02
你要能看出来是按照这个进行分组的吧。基分组的,然后这里面组里有多少个人,你要把他的名字。输出到一行啊,输出到一行是这个这样一个需求。啊,这个需求在公司当中肯定还是很常见的,很常见的这种需求行转列的一个需求。接下来还同样的,我们肯定现在没法做了,因为我们不知道他。有什么函数,那我们把这个函数哎拿过来。你给我看一下,看我们看它这个函关于函数的解释啊,我们能自己能不能把它写出来,写出来首先是一个contact。刚看到那搜里边是不是也有那个函数啊,对吧,就是一个连接吧,连接他,你看返回输入字符串连接后的一个结果。返回字符串连接后的结果,那我们先来一个简单案例来测一下这个看快的。
02:00
那我们像刚才所说的,我们用这个have so to吧,然后用be line来连接我们的一个have so to的一个服务,那这边是并have so to吧,哎,把这个服务提起来,这样就提起来了啊,就是它是一个前台进程,前台进程,然后这边呢,我们要用B连接吧。这其实还赖,其实还的一个客户端。客户端,当然你这个客户端可以是代码对吧?啊,你就用JC驱动去连接是一样的,那这个地方我们要连接想是connect COC connect,然后连接的是JDBC冒号,然后。Have to吧,Have to,然后连接的是哪台机器,它默认的一个端口号,1万号吧,哪万号你,然后它让你输入用户名和密码,那用户名你要保持跟你。哈,杜博集群的一个用户名一样吧,之后密码我们是没有任何密码的,直接调回车就OK了啊,这样你连进来了,你看这个地方已经变了吧,已经变了,那你可以设它,同样呢,Have当中呢,你默认进来的一个位置啊,就是default那个数据库,所以这个地方你可以受database,同样你还可以受什么。
03:20
Tables吧。你在MYSO当中,你进来直接设table是不是不允许的呀?啊,它必须让你指定一个库,但是have,它默认就进到那个beforet这个库里边了。好,那进来之后,我们现在要测一下这个con的这个函数,那随便来一个吧,啊select。假如说我们要连接一个。艾特,然后硅谷,你说这东西能连接上吗?这个是不行的,对吧,这个直接是不行的,那这样他说要或者是一个一个列是吧,那我们找两个列连接一下,看行不行啊,找两个列好。
04:12
De pd这张表,我们d de这张表。它有DPD,那我们把这两个连接一下,看它最终给我们呈现什么结果,对吧,Select content。然后是d PA tad吧,然后连接上我们的一个d name。这个做事。然后from from什么呢?From那个DEP这张表是吧。第一批一张表,就像。哎,这样就可以吧,你看它是不是把那个DPT的一个ID和名称全部连接到一块了呀,哎,就是我们那个刚开呀,它可以连接多个链多个链,但是你用这种方式连接不太好吧。
05:07
中间没有分隔符啊,那我们给它添加分割符能不能行呢?从从这个con的一个用法能看出来,你看啊,它是直接把字符串啊,全部干什么,拼接到一块了啊,拼接到一块,那我这里面再给他加一个。逗号或者说中划线你就加一个分隔符啊,你看这种方式能不能行啊,走一下哎,这是可以的吧,那这个可以了之后,那我们的需求当中啊。这个东西是不是解决了呀,对吧,就这个东西已经解决了。啊,那其实我们现在能拿到的结果是这个样子的,看一下啊,就是还没有把这个拼接起来呢,你现在拿到数据,我把这个复制一份,你这个事情你能不能做了,看一下啊,我把这个。
06:02
RX放到这儿,然后把这个拿过来,CTRLC。放到这儿给我。就类似于这种事,然后猪八戒也下了,就类似于这个事,你会不会做了呀,就是你通过这一个函数就够了吧,啊一个函数你就能做这点事情,好,接下来我们要做的事就是怎么把。这两个姓名拼接到一行去吧。注意,刚才我们拼接的是什么?两个列里边内容是不是啊。你注意啊,刚才我们拼接的不是这样吗?我们拿到的是这个一列和这个一列两个列里面内容,也就是说它本身啊,还是同一行的数据。是吧,同一行的数据你可以用这个吧,看看的好再注意啊,但是你现在要做的是是把这两个数据拼接到一行上去吧。
07:02
它是两行的数据拼接在一行,那肯定用这个con不太合适了吧,不太合适了,那怎么来呢?继续往下看呗,他们还有其他的函数吗?还有其他函数来看一下,这还有一个看的位置啊,这个其实是他的一个增强版。就第一个是它的一个分割符,也就这样的啊,我们来做一下这个contact with啊这个。Select t,然后下划线位吧,这个是什么意思呢?它是把分割符写在前面。然后你有多少个字段,你本来如果用这种方式,你要想把三个字段拼接起来,是不是又加一个逗号,然后加一个字段啊。就很麻烦嘛,你要是拼接的东西很多的时候就很麻烦嘛,哎,这个是它的一个夹角法,就是说你可以把它的一个分割符啊,专门拿出来,后面写它一个字段来看一下啊,De b TD,然后逗号D。
08:02
Name,然后from表。逗号d name,他说什么错啊?呃,不能够匹配到这个内容。嗯,参数二在这个函数必须是string,或者是一个数组D啊,必须是一个string是吧?必须是spring,那我们那个LC是不是spring啊。我们还有一个字段吗?LC。走一下。还不行。还是LC也是硬的是吧?啊还是硬的,那那这个能看出来它这种方式啊,是只能后面拼接的都是string嘛,哎,都是string,那你们我们还有没有哪些字段都是string呢。EP那张表里面有是吧?DC,我们测一下EP这张表。
09:03
因叫吧和这个就拿跟叫吧可以吧两个说一下,然后是康开的开WS,然后是那个哎,先指定它的一个分割符,然后把两个列方什么内,然后加上一个交通,然后是from。BT这张表来走一下啊,这个就可以了啊,就是说它必须后面跟着是一个对。啊对,那同样的它这种方式的好处不是说两个吧,你拼接两个的时候,其实你写的字是不是比较多啊,但更多的是你特别多的时候,你再加一个三电你再走,哎,它在拼接很多个列的时候,它就很方便吧,啊特别方便,因为它可以把这个这多啊写到前面去,就是相当于这个contact with是它的一个加强版,特殊形式的一个contact。
10:02
特殊形式的一个抗开,但是我们用这种方式呢。他也是不能够做什么事,不能够拼接。列的内容啊啊,拼接列列的内容,那我们接下来看这个。Collector set。Connect,他说这个函数只接受基本数据类型,然后呢,作用是什么?将某个字段的值进行去重汇总,产生类型的字段。哎,那这个就有点意思了。这个是是干什么,它是将某个字段的值进行去某就是某个字段,那就一个列呗,它对于一个量。进行去溶,然后产生一个ARA,也就是说它会把这个两个东西啊。放到一块吧,它本身应该是,如果说你把这一个列放进去。
11:00
是不是整个的列它产生了一个二数组啊。我们做一下这个connect set对吧,传一个列进去,那此时我们EP这个数据不是depg这个数据相对来说就四条少一点吗?我们select。然后是C。然后是后面是什么。下吧,C后面跟一个。内。DNA,然后from,然后DDDT这张表,看他返回的一个结果是什么,大家猜应该是什么。这个东西。他要执行MR了,对吧,要执行MR了。他说了他要去重,去重之后返回一个数组。
12:00
返回一个数组。而且是把这一列所有的数据返回数组吧。来看一下,哎,就是把我们四个部门的名称啊,本来是在四行吗?是不是啊在四行现在变成什么。变成了一行。哎,那这个就很好了,是不是就满足我们要要的需求了呀,哎,这个函数啊,好,那我们知道看一下啊,这个东西啊,就是刚才我们由于犯的错误,我们是不是看到他后面说要string或者什么。要一个string must be必须是string,或者是是一个string类型的数组。那你看到这个东西有没有什么想法?你把这个。有没有什么想法,你是不是你看啊,首先你起码要得到这个内容CRX4,然后把这个删掉,然后。
13:06
把这个拿过来,CTRLC。好先,我们假如说不从一张表直接得到结果,首先你是不是想办法得到这样一条一个中间表啊。那你有了这个中间表以后。你做这个能不能做。啊,能不能做可以吧,啊,那这个中间表来,我们还是分布写啊,像这种稍微复杂一点,因为我们之前没接触过。我们先写这种啊,好,先写这种,那就是。我还是改成色是吧,有点颜色好看一点。So。OK。Select怎么写?我们把这个建表语句也拿过来。因为有的同学可能。这个字段还不太清楚是吧,来针对于这个数据啊,我们所见的表,把电表语句放在这儿可以吧,那字段就是name,然后他的一个星座一个血型啊,那其实就是我们要。
14:15
把这个CX拿到这吧。把这个移下。这个东西呢,是这两个东西放一块,是由这个东西我们最终想要通过一条so得到这个结果,是不是啊,但是呢,由于我们有很多函数都没学过,那我们想着把这个搜索语句呢,给它拆分开,一步一步的来实现我们的需求。那首先我们要实现的是这个需求吗?那这个需求应该怎么来?对吧,Con。刚看了一个什么内容啊。他说一个射手座和学习啊,那其实我们直接用这个也行吧,用这个吧。
15:03
他中间他说结果里面用逗号什么对吧,这地方逗号好逗号两个列吧,写进来,第一个是星座来放到这,然后还有一个血型拉着太保放到这啊之后我们不光要查这个吧。然后还有加一个那。我们这个process in for这张表是不是这个查询结果肯定是这玩意儿吧?啊,那我们来做一下啊,我们做一下一步一步的实现,首先因为我们数据什么的表都没创建,也没导是吧,快速的操作一下,这边有个data,然后VI一个person,可以样快person。点TXT,然后导入文件。把这数据拿过来看,TRLC你加过来的时候,你看一下这里边就一个中杠这个。
16:02
杠就代表了一个paper,然后这里边儿的。空格是这种点一个点是一个空格,你要看一下table ctrl c拿过来过来,OK,就是有同学粘的时候,你注意啊,这不要有。空行啊,不要有空行啊,不要有空行,你下面是不是导致他字段匹配不上,最后最后多一行数据啊什么那是吧,不太好,我要看好那出去保持记住,接下来我们就见表语句拿一下。到现在这个时候,建表语句就不用再敲了吧?走,然后说是见了吧表,然后加载一下数据。Load data local。然后是o BT model,然后是四下面的。
17:09
Son four.t ST into table是这张表,粘贴过来走一下,好,我们查一下吧,Select。啊,你每次导完数据之后,你先查一下有没有这个具体的数据,哎,这样就有了吧,有了有了之后我们还是根据我们分析的结果先走一下,这个看能不能返回,理论上来说肯定是返回这种结果的,对吧,好。CTRLC这边过来走一下。哎,就跟我们想象的一样吗?前面那个列是一个。看看的拼接函数,我们并没有给它整B61,所以它用这个C0对吧表示的这个有的好,就这个数据啊,我们现在表已经从这个表啊转化成了这个表,那这个表怎么来拼接数据呢。
18:10
就是拼接成最终的这个样子。你想想看,他为什么只是如果说啊,你直接把这个器皿这一列往里面一放,他是不是把五个人全部拼接起来的呀,现在。你要干什么?你想想看,你要拼接的是前面两个相同的,那你可以干什么事,格半一下吧,哎,如半一下,那好,那假如说我们查询出来的这个表啊,叫T表,可以吧,T表,那在T表的基础上,你得到这个结果怎么来C呢?这个东西。不变吧?T一点,我们这个取个名字吧,取一个。C_B可以吧,其实就是这个这两个拼接吧,我们就起得随意一点啊,就叫这个名字好,其实第一点。
19:07
这个东西CTRLC粘过来。对吧,好第二个地方。怎么写,肯定要用到这个这个函数的吧。Collect set,然后里边跟着就是其实就那这一列对吧,那这一列,那这一列放进去。怎么来,直接就我们两个。T1这张表吗?哎,T1这张表最后格。BY,然后这个T一点这个内容吧,啊,但是我们这个直接往里粘运行不了吗?啊,因为我们其实没有提一这张表,那接下来就是把这个干什么。把这个查询拿过来吧,查询拿过来,那怎么来啊,其实就是这一块,把这个第一啊前面加一个括号对吧,把它变成子查询吧,就是把这个拿过来,Clc拿过来。
20:15
是这样的啊,但是为了好看一点,你把这个地方也加一个吧。提一点,这样会舒服点是吧,它是一个子长形啊,这个能能看懂吗?从这到这不难是吧。OK,那我们拿着这个来执行一下,看能不能通过啊CTRLC。走一下,只不过这个写的啊,中间肯定有推过了,他中间报错了。呃哦,这有一个分号是吧,把这个分号也干掉。我们把这个调一下吧。注意啊,这个在焊的窗口里边执行啊,你这个地方不能是table。你可以用空格,然后我把这个缩进一下,这是一个字段是吧,然后这是第二个字段。
21:05
把两个字段啊都分开,产品的字段空格一下,空格一下。然后from,这也是一个字段,字段都往后缩一点。说算,呃,然后这是表的平明,这没问题了,这样就能看的更清晰一点是吧,比一条语句写完就不好看,可读性不高,可能性不高,那我们走一下啊。现在没有什么封号,然后没有什么table ctrl c拿过来。他说什么?T,前面有一个什么,等会我看他报的错了。他说编译的时候没过,失败了,然后第一行。第一行不能够识别这个什么括号,是不是我上一次的。
22:04
内容啊,哪个提议没有,你说这加个空号是吧,空格是吗。但是我看他刚才执行的,我是从哪开始写的,他报错了,你看这还有一个什么题啊。走一下看啊,这个时候应该是你要看这个应该是上一次他走分号以后,他报了错,报了错呢。当时还记得我们分号是不是在这儿,分号在这,他把这两个东西啊。给你又写到两个控制台里面了,它没有执行,然后你把这个整个的粘进去,它前面多了这两行内容,是这个错知道吧。那我那我们走下。哎。这样就是提再提交任务啊,他这个提交任务好像打印机没有病号那个快是吧。
23:07
这个地方应该是可以不加啊,可以不加。看一下哎,就是我们最终所要的一个需求了吧,所要的个需求,我们是通过这几个分析这几个现学的这几个函数,对吧,现学的这个函数,然后一个一个的测这几个函数的用法,然后分析得出来最终的一个结果,最终的一个结果,这是它的一个所要求的一个行转列啊,其实最终呢,就是这个。这个函数啊,它可以传一个列进去,然后返回一个数组。返回一个数组。当然现在我们好像没有完成真正的一个需求啊,他是这样子的是吧,但是我们现在是一个数组,那你可以干一个什么事。在这个外面再加一个。敞开的位子是吧,我来做一下,懂我什么意思吧,你看现在你现在的只是做到数组这一层啊,但是它的一个需求,其实让你把数组变成。
24:12
变成一个字符转嘛,然后中间有竖划线分割是吧,那其实这个也比较简单嘛,就是你在外面再套一个,因为我们刚才分析了这个con位置,它要接收的参数是string,或者说是一个什么string类型的数组是不是?那我们把这个继续完成一下吧。其实把这个CTRLC粘过来。然后给它一个竖划线的分割符,后面跟着一个数组,括起来,括括起来,就这样来再走一下。那你有已经有了这个数组了,你最后再把数组变成一个字符串就比较简单了吧,现成的这个con的这个函数就可以帮你做到,因为它不仅可以接收多个字符串,它还可以接收一个字符串类型的数组,它自己就能把你拼接好。
25:10
哎,这样就是跟我们需求的一样嘛,啊需求一样,最终用竖划线,这各个人民对吧。分割开,然后是一个自转类型的,自转类型的,OK,这是行转列是吧。
我来说两句