00:00
好,呃,然后同样的我们把之前所讲的东西做一个回顾,呃,我记得应该是从哪一块来讲。从那个,嗯。是这个导出是吗?导出对吧?啊,应该要记得是导出啊,因为导入是第二天讲完的,那我看一下,呃,导出这块呢,大家关注一下,就是要关注两个点,第一个就是用A4的这种方式。这个是用的比较多的,因为在未来我们的数据,整个have当中的那些表啊,都是分层的。啊,分层什么意思,原始数据过来50个字段。假如说原始日志有50个字段,但是我分析某一个指标可能只需要其中的20个字段。能听懂这个意思啊,因为我们某一个指标,不可能说所有的指标都这50个字段都要用的啊,可能用到某一些,那我们就要干什么事呢,提前把这20个字段呢,每天呢,给人家准备好。啊,准备好,那这个是不是要我们从原始的表里边,50个字段表里边去通过查询的方式往另外一张表里边导数据,对吧,那这个地方是不是要用到我们的。
01:13
银色的。对吧,啊,要用到in色,那in色插入的这个数据呢,有两种方式,一个是我们看到的all right,还有一种是。Into也可以啊,Into就是追加o right的覆盖,Right的覆盖,当然它可以往某一个分区里面去覆盖和追加,这个是我们要重点掌握的啊,大家如果说想练的话,这个可以多练一练,那其他的一些对于这个啊。这个内容第一个这三个呢,我们看一下,呃,第一个用哈命令。这个是我们直接找到have所在的那个表的路径,对吧,然后用how给它下载下来的吧,啊其实跟have呢关系不大,跟have关系不大啊,这是一个第二个。Have shell命令导出。
02:00
还记得这个里边是怎么讲的吗?是不是用K杠一或者杠F执行结果,然后用Linux的追加或者覆盖啊。对吧,啊,用这两个来把。放到本地门店系统嘛,啊,用这种方式来做的啊,其实呢,它本身的这个内容跟汉关系也不大啊,然后还有一个export。将数据导到HDF上。啊,这种用的就更少,而且它比较特别是音破的这种,它必须要干什么。要xport导出的数据,因为我们发现X导出数据的时候,它里边还有一个什么原数据信息吧,啊还有一部分原数据信息,也就是说,而且我们知道导的时候,我们发现用input导入的同时,第一。如果说这个表已存在,且这个表里边有数据,你还能导进去吗?倒不进去了啊,倒不进去了,这是一种,还有一种情况,呃,其他两种情况是可以的,你这个表是空表。
03:01
对吧,你建了这个表,你表存在,但是这个空表这个可以,或者说什么情况,你这个表根本就不存在,它也可以吧,啊这两种情况下可以的,但是呢,他比较死,我们做一个了解,就脑子里面有这个东西,但是会不会呢?咱跟你说OK吧,这个东西是可以不要求掌握的,因为市场环境当中没有发现在用的。啊,就export跟import,但是整个要讲数据导入跟导出,所以呢,我们一块带来讲一下子啊讲一下东西好,最后还有一个思库这块呢,我没有讲。对吧,我们说了它是一个专门的框架,后面呢,我们要去讲的,后面我们要讲啊,那这个当中呢,这个里边数据的导出呢,就是一个音色的一个SCO,这两个东西是我们未来要掌握的,而且呢,Ins色这种方式从表A导到表B。啊,就是这个表呢,都是属于have。而A库,我们更重要的是从表A也导到表B,但是这个导出啊,更重要的表A呢,是have的表,而表B是MYS的表。
04:07
啊,我们之前举这个例子,因为刚才我们所说的,你从原始数据50个字段到我们要优先要的20个字段,这个两个表呢,肯定都是汉字表,对吧,但是最终我通过这个20个字段算出来的结果呢。举个例子,诶这个当中呢,我就想求一下今天登录的用户,用户的活跃度,对吧,有多少人访问了,那对于7月5号来说。7月5号来说他是不是只有一条数据啊,因为你要的是活跃数嘛,或者说你要的是新增用户数。对吧,那是不是就一条数据啊,那一条数据,这条数据,而且大家知道是将来为了是放在报表上面的,对不对。是要跟前端做交互的了啊,做交互查询的交互查询,而且这个交互什么意思啊。
05:01
有来有往吧,有来有往,那有同学提到了,那我在汉里面直接传,也有来有往,但是汉的速度什么。卖啊,你是一个签单页面,那我点了一下按钮,你等了什么十分钟才给我访问结果这个用户体验台上,所以这种像这种结果数据呢,最终我们都是放在MY搜或者red等等的可以接实时查询的这种方向里边,能懂这意思啊,那这个时候呢,我们就会用到这个库的导出啊,导出大家稍微记一下,就是这个导出里面呢,In色跟这个s school这两种方式是需要大家去重点掌握的,当然s school这块呢,我们并没有去讲啊,后面。讲这个框架的时候,我们还会再提啊,它就是一个工具,帮我们导入导出数据的一个工具而已啊,一个工具大家会用就行了。好,然后之后这个窗开窗开的,主要是这个注意点嘛。啊,其实它跟那个删除数据很类似,对吧,因为窗K只是清除数据,它只操作什么。
06:00
I这两个数据对吧,清空表嘛,只是清空表,没有说删除表啊,没有说删除表,所以呢,他对于外部表呢,就干根本就不能操作吧,他说了,他说窗片的这个操作不能够。用的叫no manager,是不是叫非管理表吧,当时那个报错信息还看到了吧,啊是这个意思,也就是说他必须他不能呢,呃删除外部表啊,不能删除外部表的一个数据啊,因为外部表呢,它跟我们所讲的删除的时候一样啊,数据呢,不认为是have所有的啊,不认为是have所有的啊好之后呢,是我们的一个简单的查询。啊,简单查询,那这个呢,里面东西我们就不带的,第一是过了,但是我要说一个事情就是呃,咱们的那个辅导老师跟我交流之后,我发现啊,有的一些同学有个问题就是好正常的写了四个语句。写的顺序就是这些很这会语句当中有很多关键字,对吧?写的顺序我们来回顾一下应该是什么样的。是不是第一个对吧,什么东西字段我就不写了,对吧,然后呢,然后呢,Group拜。
07:17
然后呢?然后是limit对吧,如果说我们加上什么join那些东西的时候在哪from后面这会有什么join对吧,会。啊,会有交易的意思,好,那我们就想一下,这个是我们写so的一个顺序吧,写so的顺序,那接下来它执行顺序呢,有可能同学呢就不太了解,因为你如果说不知道这个执行顺序的话,你的搜狗其实不好写。不好写了,那我们来说一下这个语句,因为这个我刚才说了这个基本语法呢,我就不带的再再去过一遍了,也没什么意思啊,都买思当中一些点啊好,我们把这看一下这个地方。
08:03
整个的执行顺序应该是什么样?首先是from。就不要了吗?注意这个里面还有交啊,所以说他先走的是什么啊,条件吧,然后呢。然后是V对吧,V之后呢。这样我把这个拿。这样好看一点。不要后面是什么东西啊,是之后呢。之后还是谁?都出来了,最后肯定是最后吧,那不用聊的对吧,先是输出嘛,这个地方有同学有歧义了。
09:03
有同学说这块是heavy。还是?先的先还是heavy先OK,那假如说我们不知道,那我们想一下这个先还是先。有什么关系?会有什么影响?一个是这样,你们可以做一个测试,那这块呢,假如说这两个东西我先写在这,你们自己下做个测试啊,我把还写在这,因为大家出现分歧了,大家出现分歧了,那可以做什么测试来验证这个东西呢?我还里边用select的聚合函数后面的别离。能听懂。
10:00
如果说可以用。那谁在前,如果说不可以用谁在前。因为亥位里边我们知道,假如说这种语法啊,假如说这里面有一个抗的心。诶,这里边呢,有个count心,我给它取名叫CT对吧,He里边呢,我用到了这个,哎,假如说我说康心大于三这个语法怎么的,无论谁先走是不是都能过这个没问题吧,对吧,如果说因为你这种写法是不是都可以过啊,对吧,如果说我这个地方不写什么。我写CT那是不是会受到顺序的影响,对吧,如果说你真的搞不清的时候,假如说你写语法的时候,真的搞不清的时候,你怎么写。我就写这个吧,我不写别名行不行。一一定能执行吧,啊,所以你下去做一个测试。啊,做个测试,你自己测试出来的结果,你记得更熟,好,那这两个结束之后啊,这是我们举个例子,我先把它干掉,好,他们俩结束之后应该走的是谁了。
11:07
奥特曼是不是?对吧,是奥BI是奥BI,因为奥BI大家应该清楚的记得可以使用什么。别名对吧?啊可以使用别名,所以呢,这个order应该在select之后吧,它是对于你查询出来的结果做一个什么排序,那最后是我们所讲的什么。Limit。啊。啊是最后,因为limit肯定是最后,这个大家肯定知道对吧,它from在最前面,Limit在最后面,也就是说这个顺序你要知道它并不是说诶我们写的语法是这个样子,就从select,它执行顺序就从这执行的,是的。啊,不知道,而且我们之前所提到一个位置下推不就在这吗。对吧,先走过滤后走查询,这个就是我们提到的位置加推,这个当时我们讲的也给我们提出的指导意见,就是假如说你两个表做交易的时候。
12:04
对吧,假如说A这个表。有ad。有name。对吧,有S这几个列,B这个表呢,同样的也有什么ad啊,然后其他的什么name s,我现在A表跟B表效应效应之后呢,我本来写的必要条件是a.AB。大于100。啊,假如说我要这个东西,对吧,我在交易on之后写一个。我们可以怎么做它的一个优化呀。量的在join的时候,之前我们写的语句应该是的什么什么内容from a join b,然后什么a.a.ID等于b.ID然后V a.ID大于100,是不是这个语我写一下有同学可能跟不上啊,那正常的我们应该写的select,假如说是一个什么ad对吧啊。啊,Name啊,随便了,这个无所谓的,然后我们正常的一个语法应该是from,然后这个地方应该写什么。
13:05
A表吧,啊,假如说A表,然后。Joy。B表对吧,然后2A点什么ID等于。b.ad对吧?啊,然后之后呢,我们写一个V a.ad。什么大于100啊,大于100是这个语句对吧,假如说这个语句,那这个东西呢,我们说了,因为它直接顺序的问题,你在教你的时候,数据是不是变大了,这个东西可以怎么改啊,然后OK,这样select还是一样的,这个后面ID什么内幕我就不写了,对吧,反正你查什么东西,这个是具体业务来吧,那这个地方我们怎么想。From a吗?不是黑了,From一个括号。这个括号是select,假如说你要的字段还写上对吧,什么ID啊,什么name这些东西呢,还要。
14:01
然后这个时候from什么A,然后where a点。ID大于对吧?啊,然后拿这个整体去教育什么B啊,假如说这个取个别名叫对吧,你现在不能用A了,交用b on什么。t.ad等于b.ad啊,那这样因为子查询它是什么先走了吧,因为刚才我们只是讨论了一个词汇语义里面内容了,假如说有子查询的,是不是子查询先走啊,子查询那个先走,所以是不是提前把这个数据集变小了。对吧,提前过滤了啊,是做这个事的,我们所讲的是意思呢,是这个这个呢可以做它的一个整体的一个优化。John and。交网按。And教育条件,And可以,And可以,我就举个例子,假如说你有这种类似的一个需求的时候,你可以先做这个数据集的一个过滤。
15:03
的话。嗯。会在执行的时候就走吗?他也是去扫描两张表吗?啊扫描两张表,但这种情况下我们是把提前数据集整个给他干什么。过滤出来了。注意on条件是在你两张表都放,数据都加载进来之后,然后放。能懂这意思,但是如果说我写在子查询里边,是不是我在教你之前我数据集就已经过滤好了。刚才那个同学的意思是这样的,这写and,然后a.a大于100。走的这个事能听懂,那这个过程是怎样发生的,是这样的,首先呢,假如说他的意思应该不能放在这,放在这就不对了,他的意思是放在哪了,把这个给他干掉。放在这对吧,你的意思是放在这儿,好,那这个过程它是怎么走的,你看一下,首先按照我们所说的FROM2张表教你,对吧,它AB呢,假如说我都是100万条数据。
16:04
他是把这两张表都拿到之后,准备做教育之后。啊,准备做教育了,然后再判断哪些数据要不要的时候应用这什么。这两个条件能听懂,但是我用will呢。就是假如说提前过滤了这个数据了,过滤出来只剩10万了,是拿着10万,根据100万走这个里面的条件。就是数据集变成这个样子。来啊,这这就是我们所说的,哎,你用子查询来代替我们之前直接放在on或者will里面的一个条件的一个因素啊,所以呢,尽量的如果说有这种类似的条件啊,类似这种条件是可以的啊,当然如果你的事情是这样的,假如说你是交易之后。交易之后产生了某一个新的字段,然后这个新的子段要进行过滤,那就没办法了,能听懂。假如说原始数据A表里面有ABC3个字段,同时B表里面呢有什么D?
17:02
EC3个字段,因为我们保持构关联字段,OK吧?啊,假如说我取名的就一样的啊,那如果说你之前在V里面写的是对ABC或者decc这几个字段做的过滤,你可以用我们现在这个事情。做假如说,假如说你要过滤的东西是,诶,你把这个交集到一块,是把A加B的,假如说什么工资啊,把它合并到一块的,然后对这个合并到一块的大于什么1000的做过率,那你能说写在那个。整整个的那个子函询那边嘛,就是说我凭空产生了一个F这个字段,就是两个表交一在一块就产生一个新字段,这是有可能的,对吧,因为两个数据放在一块,我有可能把两个列加在一块啊,或者乘呢除啊,这个都可以吧啊这都可以,因为一行数据嘛,就应该把一行数据加在删除而产生这个新的字段,我对这个新的字段进行过滤的时候,你说我对这个A什么B,它有F字段吗?没有吧,这个你就只能说什么写在外面,所以说你运用这种优化的时候,你要想一想,你过滤条件是否是原来的表里面有的啊,你要注意这个事啊,你要注意这个事,所以呢,大家很需要这个地方要搞定啊,这个地方要搞定好,这个是我跟那个,呃,咱们的那个辅导老师沟通的一个结果,就是大家对这个执行顺序。
18:21
啊,有一些同学呢,啊,不是特别了解,不是特别了解第二个,还有第二点就有很多同学呢,不太会使用子查询。它反映的情况是,呃,看你们的搜狗就什么东西堵在一个数字里边。就不太会使用查询,我们什么时候要用查询。我们要对某一次查询结果再做加工的。就类似于这样的,就是他跟我反映有同学写出来这样的一个事情,这边呢写了一个康新,假如说取名叫CT,然后接下来他用CT什么加一。
19:01
就类似于做这种操作。就类似于做这个操作,那我们想一下啊,这个count的心跟这个CT他们两个人同属于select的语句里边的。没问题吧,他们在执行顺序上。一定是平级的。对了,平级的就是什么意思啊。会同时去计算嘛,也就是说你看啊,我假如说对于某一项数据,我要计算这个CT的时候,你又要计算CT加一,不好意思,靠的新这个东西呢,是要把所有的当前这个分组,假如说分组,或者说我没有写输入半,它是不是全量数据集。他要把所有数据全部扫描完,在干什么?才能出来一个结果吧,对不对。假如说我们有写公倍,你总共有十条数据,看新出来是不是等于十啊,没问题吧,那我们想一下,它们俩是平行的关系,如果你这样写,你默认的情况下不是CT比它小吗?
20:05
比他小的意思就是在他后面执行。对不对,因为你敢写出来CT加一,那一定是有了CT才能加一对不对,那一定,因为在你的想法里边,是不是CT先求,然后再求CD加一啊。不是的啊,你不要看着,好像你写的语法是,诶CT加一在靠的后面这个地方,跟你写的位置没关系啊,他们是平级的。能听懂,他们是同时做运算的。同时做运算的,也就是说那同时做运算的时候,那我要问大家这个没有的时候。这个能出来吗?出不来,所以像这种情况,也就是说我们刚才所说的,你要对于某一个结果再进行加工的时候,我们要用到什么。查询你可以这样做的,假如说我把它写一下。这个地方呢,我写了一个来的么。C取别名叫这个CT对吧?啊这个都无所谓,好就是CT,然后比个A表。
21:06
上一个A表,假如说你要对这个count加一对吧,这个呢,你取名什么T1,因为此时是乘以结果了,然后我们去做什么事。CT加一,然后from这个什么题啊,这个子查询出来,而且我们跟他说了这个子长询怎么把它拼接到一块。很简单吧。在这块。对,还是这样,这样好看一点,空三个三个,然后前面尽量加个括号,其实有时候不加括号也可以,但尽量加个括号,因为这样你后来分析的时候能好看一点,那符号后面跟一个括号,一个子条形嘛,然后把它干什么,分号前面的注意分号前千万我要复制分号对吧?哎,你把它放在这这个就实现了你要的那个内容,当然有同学说我要的是countt加countt加一,那这块你再写一个什么。CT对吧,啊逗号那这样。
22:02
啊,不用加T啊,因为只有一张表啊,这个是不用加T的啊子查询里边它不会不会用到这里边的一个什么内容的啊。这个就不用加T1了啊,不用加T,如果说你这还有个T2表,假如说里面还有一个CT,那就要加啊,那就要加,这个是可以不加的啊,就类似于这样的子查询,一定要会用,就是类似于你要你要想的你当前CF里边写的语句是不是对某一次求的结果再进行二次加工。如果做到二次加工,那不好意思,二次加工应该提外面去,把里面内容包裹成一个什么子查询啊,包裹成一个子查询啊,因为就是跟咱们辅导老师聊的时候,呃,他普遍反映的情况就是大家基础当中这个点。啊,有的同学搞清楚,所以说这个东西呢,是必须要说一下,因为这个是整个麦色当中选择过程当中,应该是最基础最基础的东西了。啊,最基础的东西,你如果说这个搞不定,那你搜索确实不会写啊,确实不会写啊,这个呢是整体的一个内容,然后这块内容呢,大家如果说还不是特别了解的话,自己去看一看OK吧,啊这里面东西呢,都是买S当中所讲过的一些东西。
23:11
啊,包括诶还有一个点就是跟其他老师MY,就是讲MY老师聊的时候好像。大家在学买Q的,对这个什么内连接,左外连接,右外连接,还有全连接这个东西好像不是很了解。啊,首先这样啊,就是你们买所有高级上网上过了,那应该那七种应该说过是对吧,就那那几张图啊,对吧,那首先是内连接。假如说这是A,这是B区域,这是C区域啊,这是一表二表,这是交叉部分。对吧,那我们说的那连接他要的是哪部分数据那部分吧,好。
24:00
那分左半呢是AB吧,啊AB部分那右边反过来BC。好,那。还有一部分。如果我只要A的,能不能拿到呢?只要A的怎么做?那个。接的时候,那连接写的是教育。走班呢,来不?右半就教吗?然后呢,这块教育条件都是a.ID等于b.ID没有额外的条件吧,没有额外的好,现在我叫A区。这个是一表,这个是二表,用哪个?这三个用哪一个。
25:01
肯定先是左外吧,因为左外才会包含区数据,如果说你用右外,首先区的不包含了,不可能再取出来了,或者用内连接也一样吧,是不是也不包含A区域了,那所以一定用的是组Y。对吧,啊,一定用到左边,那左边里边左半呢,它包含了AB2个区域,那我怎么把B给干掉啊。是不是B是关联上的,A没关联上啊,那我用左半首先用来也给我写LG啊,因为写下了LG,并且在on语句当中,除了什么a.ID等于b.ID之外,1.id等于2.id之外,还要加一个an什么。谁为C等于?不是C是区域啊,2.id等于,我不说了,这表叫一二。对吧啊,2.ab意思什么?No对吧?啊,它空is no是这意思。
26:01
想一下没问题吧,啊,因为他因为右边右边没关联上嘛。没关联上的时候,你用左边连接是不是补一个nu对吧,好判断它为nu就OK了,好,那同样的我现在是不是有可能我还要C区域啊。那所以区域就一样的吧,啊,那用RG,然后二。那就是1.ab什么的意思到了吧,啊意思到是这意思啊,这意思好,那还有其他的用法就是呃,我要这两个。那用这两个之前呢,我们得先讲一个,还有一个什么弦外。全外在全外连接呢,也就是说全外连接要的是多少,哪个区域啊ABC。ABC就所有的都要,那这个呢,在我们当中。用有一个很好的语法,叫佛教一码,哎,所有的都没有保留了。
27:03
啊,都保留着,那在MY当中不行啊,你得自己去调吧,啊得用过滤条件去做啊,或者说用定到一块,好在全外的基础上,是不是我们可以选AC区域啊。AC区域。是不是用全麦对吧,首先你要AC,你其他的这个是AB,这个是B,这个BC,这个是A,这个是C,你首先你把他们俩引领到一块可以。对不对啊,有定到一块可以,那我不想到一块,我可以用全麦去减吗?我把B减掉不就行了吗。想一下是不是这个道理,那全外连接里边连接出来,假如说我这个数据是这个样子啊,我举个例子好,嗯,一表呢,有两条数据ID。Name啊,A2呢也是AB加name啊,假如数据呢,这个无所谓字段对吧,有一个关联的就行了,好,它呢有一个一二,它呢有一个一三。
28:03
对吧,首先如果从数据集的角度来说,内链接要的就是这个一。对吧,那要的就是一二,这个要的就是一三。而他呢,要他呢要三对吧,全麦123。好,我现在要的是AC,也就是要的是哪个。是不是要二三。那我怎么把这个二三给过滤出来,全麦连接一交应到一块,它有一个什么特点啊。全,假如说这个是1.id,假如说字段写出来,这个是1.id,全麦连接最终出现几条数据。三条对吧,三条数据的样子是这样的。啊,这个是2.0是一一交以上的对吧?好,然后这个是一个二,这个是一个什么。那这是一个no,这是一个什么三,那怎么过滤出来二三啊。
29:00
a.a a.ID is now or2点ID is now对不对啊,那这样就能把AC的区域,那这个是我们啊说的七种情况啊,七种情况只不过说在这个过程当中呢,呃,因为在have当中或者or当中,它有这种全麦连接的语法,所以你拿AC的时候比MYS要方便一点,MYS是不是要用union之类的给他拼接在一块啊啊单独的求A,因为你单独A单独C能拿到,那你AC拼接在一块肯定能拿到。这没问题吧,啊这七种啊,这七种啊,那重要的就是最后有一个全麦,它跟蓝色个呢,它不太一样啊,它不太一样,所以呢这个呢,大家要去关注一下啊,里边有家教育的教育,还有这个负教育啊,这个点呢是而且在生长环境当中,我们之前所讲的什么几百行啊,甚至上千行的一个搜狗。不是说一张表,然后里边有有成千上万个字段,然后写出来这么多的,而是有很多表在一块干什么?
30:01
进行交育啊,甚至多的时候有一个业务比较复杂的时候,十几张表在一块交易,这都有可能了啊,所以呢,他就会把整个因子他学写的多,然后教育条件写的多,而且同时呢,生长环境当中的一个字段又多啊,就导致整个色课就长啊,色课长,但是授课长确实难看,就像大家写的稍微长一点色,让你第二天去看,你就不想看了。对吧,假如说里面有个错让你去改,你可能要想到我不改了,我重新写一遍啊,对吧?啊,重新写一遍可能还舒服一点,这就是circle,它就这样,它这个语法呢,不好改,它不像代码啊,不像代码啊,这个东西没办法,特别是看人家的一个色狗没后面没有写竖式的,很痛苦的啊,很痛苦的生产环境当中也一样好,那之后呢,是我们所讲的这个。四个半啊,四个半呢,我们就快速的回顾一下,首先呢,我们学的四个半有。对吧,有还有一个ribu,还有一个是对吧?啊好叫全局排序,全局只有一个reduce,哎,无论我们有没有设置这个什么。
31:10
维的数量它都是一个啊,他不看你那个维的数量,它会因为你写的奥奥半是是不是属于它在翻译的时候属于代码级别的一个优先级。最后要执行任务嘛,他只要看到奥这个关键字,不好意思,前面属性呢都覆盖掉,我就用什么一个啊全局排序,因为大家选他妈的应该也知道全局排序,第二个是派叫区内排序对吧?啊区内排序它要结合着多个分区来用了,因为如果说你设置成一个分区的话,结果跟这个auto是啊一样的啊是一样的,好接下来是Dis,它就是来分区的。而且默认的分区规则就是按照哈希。按照哈西来的,哈希发地震啊,哈希发地震,因为我们知道,呃,他走的是MR任务,MR里面分区规则默认的就是哈希对吧?啊就是哈希好还有一个。
32:03
当我们分区字段和这个排序字段相同的时候啊,可以用那个什么class来代替啊,Class来代替是这意思啊,那这里边呢,要注意的一个点就是这个在先表语句的时候,我们有一个class。得呗,对吧,这个是T吧,这个是加ED的,这个是分表。这个是什么?先表语句,还有一个partition的呗,对吧,也是介表语句,你只要记住加ED的,你不要不要往level的语句里面写对吧?啊,这样也好记啊,做一个归纳啊,作为归纳是这意思啊啊,这是四个BY,相对来说呃还好,但是在面试过程当中,其实它不难,但是面试过程当中呢,问的还是蛮多的,就是这四个面的一个区别联系啊,什么各种问啊,问的比较多,还有其他的什么别名啊,这些东西我们就不聊了,分钟秒呢,做个了解啊,做个了解啊之后呢,就是没有什么太多东西,生产环境当中用的。
33:01
不是特别多啊,不是特别多,因为它是针对的数据文件。本身呢,我们说了这两个东西都有一个什么好处呢,就是编辑查询的。啊,变电查询的,呃,那分区呢,它本身就提供了一个数据隔离的一个。记住了吧,啊,因为我们说了分区字段是放在原数据表里面的。想一下对吧,我们查询的时候先从原数据里面找到实际数据路径吧,那原数据有了,我如果在V子句里边。V子句里边已经写了分期数段的过滤条件。那将来读数据的时候,我们知道刚才我们所讲的from where,执行执行语句啊,对吧,那他将来真正去like的时候,他还去找其他分区的路径吗?不会去找了啊,不去找,所以说呢,这个分区表在生产环境当中是大量使用的,大量使用的,但是分动表呢,用的相对来说还是很少啊,用的很少的啊好,那之后呢,是这个常用查询这个空制段对吧?啊空制段的一个内容,然后时间内你需要记录一下data for对吧?然data data,还有这个data Di,只要是这个中间有个特殊的地方在于它没有下划线对吧?啊其他的因为如果都有下划线,那还好记一点啊,大家都记得data它后面加个下划线对吧,什么smart a s,还有那个什么地,但是不好意思,这个里面呢,它这个没有下划线。
34:28
啊,没有效果线啊,然后kiss kiss then加一个end啊,不要漏end,因为我们一直经常说的kiss kiss对吧?啊很多同学呢,这个什么else,还有这个and。对吧,啊,Case when then else and这一套啊,啊,这一套不要漏了啊,不要漏了,不要想着只有这个case when,那我们还说了一个,如果这个case when只有两个分支的时候。我们可以用if函数来代替吧,啊,用if函数来代替,MY当中也有这个函数啊,那这个当中呢,它有三个参数,第一个参数要一个。
35:04
布尔啊,就结果布尔表达式了啊,布尔表达式第二个是布尔为出的时候,当前这个异函数的反回值对吧?啊,当年一盘中的返回值,那接下来是这个,那就为false呗,啊因为我们说了K分只有两个分值的时候,你可以它代替,因为布尔类型呢,它只有两种值啊,To跟false啊除跟false这个是要注意一下,还有之后这个行转类。列表行,呃,你现在不记行转列列表行也无所谓,你现在要关注一下,就是康开的康泰的位置,他是做什么。磁符串拼接的对吧,它不光可以拼接一个单纯的字符串,还可以拼接。列多个列对吧?啊多个列,但是有一个点就是con,当时我们拼的时候,我们是不是可以把AB硬的类型的拼到一块啊,但是这个位置的时候,它先定的里面必须是什么string类型啊啊,因为它是一个特,其实是它的特殊形式。
36:00
啊,都说in,因为用慷杯子能做的事,我contact一定能做。对吧,我一定能做,因为麻烦一点,但是contact能做的事,你contact不一定能做到,因为我第一个AB字段我用中档分割,我BC字段我用竖杠分割,看看的位置做不了了啊是这个意思啊,所以呢,它是它的一个特殊形式,相当于啊特殊形式啊,如果说比较方便,这个符号相同,而且同时后面呢,又是一个数组,对这个呢,就可以用什么。对吧,方便一点,那还有一个。他呢,跟他俩其实有一点不一样。这两个东西是不是对于同一行做的操作。想一下。他把两个列拼接到一块,这两个列数据在同一行的,我才能拼接到一块了啊,你ID为一的,ID为二的,你呢,内部叫张三,你叫李四。那我要拼的时候,是不是一张三二李四拼在一块对吧,但是我connect呢,是对于谁啊,列操作的吧,啊等于列操作,他把一个组里边列放在了一个数组里边,对吧?啊放在数组里边,而且我们看到有connect list,有set。
37:19
对吧,啊,一个叫一个list,一个是驱虫一个什么。不驱虫啊,一个不驱虫是这意思啊,好这是啊,这个东西之后呢,是这个。Export。我们叫炸裂函数,炸裂它是属于呢u dt。UDTF这种炸裂函数,OK,那什么叫UDTF呢?我们之前稍微提了一嘴,叫一进。多处。对吧,现在我们知道了类似于我们刚才所说的抗K的这种函数,你想一下它是什么?多进一出网络,它叫一进一出。
38:01
啊,还没有理解这个一是什么意思啊,等会我们再聊一下,还有类似于some和那个connect,它叫什么。他叫多金遗嘱。这个一跟多讲的是行。而不是多少个。参数。而且是哪些呢?什么叫哪些单词的缩写,后面我们会自定义,你能看到后面再聊,后面再聊那家来看下。呃,刚才我们说了一个是三种啊,一进一出啊,先先不不关注这个单词,现在呢,你要把函数呢分为三种,还有一个一进多出对吧,还有一个多进一出啊,这个一跟多讲的是什么行不是参数啊,不是参数。不是参数啊,跟参数的个数没关系。是行,那想一下sum这个函数是不是聚合函数?
39:00
它是不是多进一处啊,因为他要把多个行的数据给它汇总为一个数据吧,对吧,那这个炸裂函数呢。我们是不是把一个数组本来属于一行,这个数组是不是属于一行的,我们把它变成什么多行啊,这个一进多出,你这个一进一出啊,这种进出这个前面的一跟多,你要知道是行不是参数的个数,不是参数个数,那我们之前NVL那个不是判断为空,用次数来代替吗?对吧,啊,用这个标来代替,那这个地方呢,就是我们所说的,你虽然有两个参数,但是是属于什么。一进一出的,因为它是对于一个行里边的数据进行操作啊,你要关注的点是在于行啊,那这块呢,是X pro,我们叫的是UDTF是一进。多处啊是一行进来啊,出去多行啊,出去多行,那这里边有一个关注的点就在于如果说我们要什么。跟原表进行关联,因为这个语法我们还来写一下,就是大家写一下这个东西select,我们之前是不是有一个moving for这张表。
40:08
有印象吗?我们不是有用的这张表吗?还有对吧,我们来看一下就这个吧,啊做这张表,然后我们要写的东西。首先如果说我们直接写一个。Pro错了,炸裂对吧,炸裂这个category啊,炸裂这个category这个东西是不是可以执行。对吧,叫movie,叫movie这个东西呢,肯定可以执行,他直接给它摘裂开啊走。他把直接张开了。但是当我们如果说想写这种。就是跟原来的字段进行什么。进行跟原表进行关联的时候,这种写法就不行了,对吧?因为我们分析了一下,如果说它可行,那做的也是笛卡尔机,不是我们要的结果啊,但是呢,它根本就不行,那这个地方我们应该改一种写法,怎么写select这个movie。
41:13
还是一样的,要写在这儿。第二个字段应该是炸裂开的字段,炸裂开的字段呢,现在要取别名了啊,现在呢先不写啊先不写先呢是from。这个movie in做这张表对吧,所以这张表呢,我们要用letter letter view。来,然后再进行什么炸裂,炸裂这个表里面的好取别名两个,先是表格边名,然后S是列的边民啊,炸裂开来,列的边民啊,表的边民呢,我们叫category。叫time啊,就叫ta吧,好,然后as对吧,然后取一个category,比如说我取一个别名叫name啊,你要注意第一个是表的别名。
42:00
啊,表的边名,第二个呢是什么?列的别名啊列的边名,那这一块我们是把关联在一块,那这块怎们写就是category name写在这吧,啊把它执行下来,也就是说你但凡想跟原表关联的时候,你要加上let view这个地方,而且呢,我们说了它叫什么。侧写啊,就是侧面描写,就是跟原来的表进行一个关联,这也是固定语法,固定语法就类似于select的,你要写在前面是一样的啊,你要跟原表进行关联的时候,你就要写上这个语法啊,你要就要写上这个语法啊,这个呢是我们所讲的这个点。加列函数,我把这个截一下。
我来说两句