00:05
GLE如果要删除历史数据怎么办?直接删分区的文件夹。可以上分的文件夹。但最好不要对吧,你可以把那个数据删了,他可以删,但是你为什么要删克浩的数据呢?那你真要删,你就正常删呗,他又不是不能删。我说很少用,又不是说就完全不能用。对吧。你该删删呗,你如果真的需求要你删,那你就删呗,他能删呀,他又不能删对吧,这个要注意一下,他又不是说不能拆对吧?好。如果你的需求对,如果你的需求必须要删,那你就删就好,对吧?行,那接下来呢,我们看一下这个语句啊,它这个里面呢,有这个叫roll up上卷。
01:06
对吧,然后with cube cube立方体对吧,还有with total啊,用来计算这个小计和总计,这个时候大家就体会到了o lap的魅力。就会有这种东西啊,就会省不少的事儿。就会很省事儿对吧?呃,怎么省事呢,我们来看一下,首先我们把这张表呢给它清掉。The table,然后delete well,一等于一,那不就是所有数据全部清空嘛,对吧?好,那我们查一下。行,From这张表那肯定是一个空表了,因为我们把所有数据删掉对吧?呃,那么接下来呢,我导入数据,把这个数据表导入。好重新查一下,现在呢,有这个这样的数据对吧,二号四号一号无所谓啊呃,大家来这里边有ID101。
02:03
ID101,然后呢,567891直到十对吧,没有这个102102呢,写的两个101,然后这里边有1SK001 SK001对吧,有003003002,哎,都有重复的,无论是ID还是这个SKID,它都有这个重复的。啊,它都有重复的。对吧,好,那接下来呢,我们来看一下这里边的正常语句啊,比方说现在我们要做这个事情with啊,但这样啊,我先不不加with啊,我把这个四个语句拿过来大家看一看。这个思索语句是一个非常常规的思索语句,Select ID SQ ID some total amount from,这张表group ID和SQID,对吧?那它的结果呢,长这个样子。它的结果长这样,我把它呢复制下来啊。
03:03
放在这儿。对吧,我给他放在这个地方。好,那接下来我们要做什么事呢?看啊,在这个基础上我们加一个语句叫with roll up。叫上卷对吧,我们看一下它的一个结果来。注意看啊,我们的查询语句在这,With roll up对吧,关键词它比黑的啊这种,然后呢,首先你看这个是不是跟它完全一样。这一部分。是不是完全一样啊?对吧,完全一样,然后接下来呢,看啊。它那个。这一部分相当于什么来看这个里边呢,有两个1001吧,101啊两个。
04:09
然后呢,这边。两千一千,然后到这个100101变成什么。3000啊,也就是说它相当于上卷什么意思呢?然后继续啊,接着我们看,然后这边的ID0对吧?啊,因为它是一个空串啊,其实它是一个空串SQID因为是一个字符串嘛,他用的是当前这种类型的一个默认值,然后呢,16200。16200。对吧,它是把这个总的加起来了,好,所谓上卷也就什么意思,假如说我现在不有AB2种维度吗。对吧,好,你勾by AB的时候,然后呢,正常的AB都有对吧,然后从右往左。注意从右往左把这个A改把这个B维度去掉。
05:02
对吧,好,这是中间的结果,也就相当于只勾A。只做勾8A,然后接下来呢,把这个也去掉。对吧,就这一部分数据。总的啊,就是说不要维度算总的值,那如果说我们有ABCD4个维度呢。对吧,那首先四个维度都要,然后算ABC,然后算AB,然后算AB,然后什么维度都不要,这个就叫上卷,从右往左勾BY字段,从右往左来删除这个数据。能理解这个事情。OK吗?对吧,它很方便啊,这个是不是相当于求的是我们当前这个group by字段的叫前缀字段呀。跟昨天我们写的叫前缀自带还有印象吗?
06:00
是不是abcd,然后ABCABA。对吧?啊,这是所谓的前缀,自带这个就叫上卷,上卷刚才陈总说了,上卷下端记得have可以啊,对,Have其实也可以啊,好,这是第一个,哎,有意思吧,那第二个还可以干什么呢?叫with。Cube with cube啊,还是同样的这个语句,但是在后面呢,加一个with cube。啊呃,那Q呢,他有什么结果,我们看一下啊来。把这个干掉,叫cube。走一下来看,首先我们是有ID加SQID,所以呢,他先把这两个算一下。嗯,先把他俩算出来。对吧,好,那接下来是把右边从右往左,我们不是AB2个字段吗?对吧,先算AB,然后再算A,再算A,接下来呢。
07:05
单独算B。然后什么都不算就不要算一个,总的就是直接上,不做goodbye。对吧,啊,那为什么叫cube cube什么意思。Cube是什么意思?构建维度立方体,对了,其实你看啊,那问大家两个维度它有几种组合呀,我们假如说根据两个维度算某些指标,它有几种维度组合呀。
08:09
二的对二的N次方啊,就是四种啊就是四种对吧,好那哪四种呢AB嘛。AB还有一个空。对吧?啊,那这个就是Q立方体,它指的是把所有维度组合的结果都给咱们展示出来。啊,都给咱们展示出来,好,这是第二个with cube啊,还有第三个叫with total。With total哎,我看一下啊,Total丝啊,To丝这边告诉我们了,写错了对吧,加S叫total丝好呃,那这边。它先呢是AB。然后呢,什么都不要。对吧,AB先按两个维度算指标,然后呢,算一个总的,算一个总和啊,这个就是位total啊,它是总数计算总数的。
09:07
这个也比较好理解吧,那有了这种东西是不是很方便啊,大家。是不是很方便对吧,算一些这种高维的数据分析的时候就很方便,我们不用写那么多的circle了。对吧,特别是cube太方便了,假如说我们维度特别多。对吧,我们维度特别多的时候,那完全就可以用这种方式。这个太太简单了,太轻松了,对吧,很爽。啊,就直接把结果写出来,然后呢,计算出来之后放在一个地方,然后呢做查询,那刚才加定同学说了对吧?呃,在have当中也有,那我们就带着大家稍微去看一下have当中的啊,确实也有啊,呃,那打开这个have的文档啊,其实大家大家之前都发给大家,大家很少去看而已,其实这里面还有很多好用的好玩的函数啊,比较有意思对吧?在生长环境当中可能都用得到,但是比较一些偏的啊,那大家觉得不常用呢,是因为呃,比较少有人知道,所以导致这种现象啊,那我们看一下这个。
10:19
我前一段时间不正好发了一个帖子嘛,不就说这个事儿嘛,有有同学看吗?但是我比较懒,不愿意经常去写一些帖子。好,然后接下来呢,我们点到这个勾盖。啊,点到这个购里边。呃,他有一个group set cube roll up,看见没?在这个地方啊。这个东西啊,其实它的一个group inside啊是最灵活的,特别灵活,我们来看一下很有意思啊,这个东西对吧,点开点开好以后呢,我们直接点这个啊,看它的一个绝函数啊,然后这边呢,它有这个语句,然后我们接下来看group s啊,看它的语法,首先我们看啊,它也是基于两个维度啊,这个四个语句呢,看到这都是很简单的。
11:13
对吧,后面可能大家没接触过,那这边呢,C like AB,然后some CC呢,就类似于我们total among,对吧,然后呢,From table1group by AB,那就正常的一个分组聚合呗,但是我们这边加了一个什么呢?加了一个grouping set,然后括号括起来,AB作为组合,它呢相当于这个语句。相当于这个语句对吧,好,那AB上C。AB上C对吧,然后from。Group by AB,因为我们只写了一种维度组合,所谓的group sets啊,这个内容干什么事呢?就是用来做。指定维度组合的啊,然后里边再用一层括号括起来就是每一种维度组合,你比方说这个。
12:07
这个对吧,好,AB something c,一直到这都是我们熟悉的。啊,AB some c,然后from。Group by AB对吧,然后呢,Group sets,然后我要的是AB以及A,那你看它相当于四个语句这个。Goodbye。相当于这个group by AB,以及union上这个a no,因为你要用union,你必须保证两边的字段相同,上面有AB2个字段,下面只勾by a,因为这边是不是有个A呀,单独的一个A。对吧,单独的一个A,所以呢,GOA的时候你要把B补那。Something对吧?好,同理,如果说我们写的是go。Princes AB,那就相当于goodbye a和goodbye b这种方式,以及还有AB2个维度,我们说了有四种维度组合,对吧,有AB,有单独A,单独B以及一个空啊,那就相当于是什么呢这个。
13:07
四个词和语句,Like AB something对吧?Like a no no b,然后呢,No no something啊,取得默认值,但是在在我们house里边,它不是都用的是now,它用的是什么?它用的ID,我们用的是B那个u in的类型,所以呢,它默认值取的是零。它默认值取的是零对吧?啊,默认值取的是零好。呃,那这边呢,大家就了解了,但是这边有一个问题,什么问题呢?比方说我维度特别多,假如我有四个维度。二的四次方,那就16种。对吧,那你这里面要写太复杂了,对吧,很多那怎么办呢?所以底下啊,来我们继续往下看。接着往下看这边啊,呃,你比方说这里边呢,它有cubes and roll us啊,就跟house一样啊,首先它group says呢,非常灵活,那我们看一下它这个地方呢,有一个with cube。
14:07
位Q对吧,QB呢,如果说我们有三个维度ABC对吧,ABC,那就相当于ABCAABCAABCAABC空八种,二的三次方八种对吧,相当于它啊,这个很方便,那还有一个如R。With up相当于呢,这边啊,如果说我们写的group by这个ABC,然后with you up,它相当于是什么呢?相当于group by AB CA group size caba空是不是上卷啊,对吧?从右往左删除维度吧,直到所有维度全部被删除。对吧,这个就非常有好处,特别是have当中这个Q宝,呃,我发了那个帖子之后,有三个同学。有三个同学说刚好能用上啊,他们之前做法呢,就是说自己去拼接,他不知道这个函数啊,那这个假如说我把这个结果算出来,他不是相当于这个样子吗?对吧,我往上看啊,嗯,它相当于AB,然后a no no b no no,好,那这些东西在一张表里边,我们怎么用呢?很简单呀,如果说你你写的四个语句,对吧,Select的AB,然后呢,C some c,假如说我取名对吧,你要导到have里边,导到MYS里边吗?
15:23
对吧,呃,然后呢,直接取别名叫C啊,你查询ABC from那个ADS层的表。对吧,你要做多维分析,直接from ADS的表,然后呢,你就写上条件where a等于什么,B等于什么。对吧,那这边呢,假如说我们写接口的时候,我们知道可以负默认值的,是不是我们给它可以负默认值,那默认值呢,我负一个,那这边我也负一个nu,假如说我要。AB这两个维度组合的一个结果,那A跟B都负值,如果我只要的是这种结果,我指向看单独A维度下的结果,那B就保持默认值就好了,A负个值。
16:07
对吧,反过来干什么事儿的,反过来我就把。B赋值A保持呢,啊,那我要看总的呢,我就不传AB,写接口的时候我就不传AB对吧,因为AB2个人都有默认值,之前给大家演示过了,其实在我们的spring,也就web项目当中,如果说我们在这个control方法上面写了默认值参数写了默认值,那其实可以不传。对吧,可以结合着这样的方式来用啊,就在一张表里边,我们把所有的维度组合的结果。直接计算出来,直接计算出来,那这个就很方便了。对吧。OK吗?能理解这块东西吗?回忆一下为什么大家扣完四之后我讲了半天。没有人说话了,这块能接受吗?
17:02
他不难啊,它不难,只是说大家是不知道这个事儿啊。对吧,很多同学不知道这个事儿啊,但是有一部分同学能知道。对吧,它并不难啊,这个知识点并不难,这个就是属于不知道的问题,因为没讲过对吧?啊好,那这个呢,我们了解一下啊,在have当中一定要记得有这些东西啊,还有其实在这里边还有比较好玩的这个group ID。ID对吧,这个东西啊,呃,Group ID呢,你也可以去group,这个ID可以做分组啊,也比较有意思,你可以自己去看一看,这个东西啊,我就不多说了,多说了,其实have这个整个的查询文档当中还有很多比较有意思的东西,因为它毕竟是作为一个orp数据库对吧,分析型数据库,所以它有很多之前你可能想象不到的一些函数。啊,它做AP用的嘛,对吧?好,这是我们所看到这个点啊,大家知道一下还当中也有,呃,接下来我们继续啊al操作对吧?它可以修改这个表的字段啊,修改类型以及删除字段啊,这个可以啊,在have当中这个也可以,但是在have当中这个是讲了的啊,这个讲了啊更新数据可能没讲对吧,但是像更新字段这个是假了,添加字段删除字段这个都可以对吧?呃,好,大家还有导出数据,导出数据呢,就直接用客户端执行一个查询杠开,然后呢。
18:25
追加到一个文件,跟have一样。还也可以这样玩对吧,这个就没什么好说的了啊,就一般也不会说导出,因为它是做实时查询的,我们也没必要导出,直接呢就做一个查询啊,直接做一个查询,好这块要注意一下,就是刚才我们聊到了这个东西,跟大家多说一句,Have当中呢,我们说可以增加字段,但是呢,只能在最后增加,比方说我有A。BC3个字段,我想增加一个字段一个D,我只能在后面增加,为什么?
19:05
大家知道为什么吗?就是说我我其实可以在中间增加啊,在生产环境当中不会这样干。有同学知道为什么吗?就是说如果你生产环境当中这张表啊,你假如说你要在最后扩展一个字段。啊,你要在最后扩展一个字段,那没有问题。啊,但是你想在中间加一个字段对吧,中间ABC已经有了,然后我想在中间加一个字段,这个是不行的。对了,班长,没问题啊,说对了,字段的顺序发生了改变。啊,字段的顺序发生改变,有可能,特别是类型上还有问题。
20:02
对吧,类型上还有问题,我举个例子啊,比方说这个A。对吧,是ID这个字段啊A第一个字段是ID吧。它呢,我们可能用了一个string类型。对吧,好,然后接下来呢,B是一个,呃,随便吧,我我就随便举个例子啊A啊,然后呢,B字段这个呢,比方说它是一个也是一个四辨类型。也是一个string类型对吧?好啊,那接下来呢,我们再看C啊,这个B啊,第三个字段也是四类类型吧,无所谓的,好,你正常加个D,假如说呢,你想要硬的类型没有问题,对吧,你在最后加,你再添个数据的时候,最后一个字段是这个,假如说我在中间加呢。我在这加一下,这加一下未来这个列上的数据啊,就指向的是D。啊,然后这个列的数据指向的是A,最后你扩展的这个列指向的是B,数据全乱了。
21:00
对吧,数据就乱了啊,所以在最后增加,那也就是说是不是我想在中间增加的时候,这个数据就会有问题,一般你不要在中间增加嘛,你想想看,Have你后面一层啊来的数据,比方说ADS层吧。或者不是ADS,假如说是这个这个DWS。我本来有ABC。啊,你想加一个D,你在最后加就行了,那有的说不行啊,呃,我就要在中间加,那在中间加跟最后加有什么区别吗?没区别,其实啊,我在最后加,那有的说我查询语句我得先写D啊,那你查询语句就按照这个顺序写不就完了吗?就是说你DWS是不是来自于DWD。哦,那我把搜个语句,我把D写到最后,查询的时候写到最后不就好了吗。能理解这个意思吗?对吧?所以面试官如果问到你啊,假如说have当中我想加一个字段怎么办?有很多同学呢,不记得这个事儿说的就是说我要把表重新建一张,不用重新建,如果只是加一个字段,在have当中可以直接改。
22:10
可以直接增加字段对吧,这个要注意一下啊,完全可以,这个没有问题。对吧?包括修改字段名也可以,对吧?以前我叫AA,现在呢想叫BB完全没问题,可以重新命名对吧?这要注意一下啊,就是这些细节都是在汉文档当中有的也讲过,但是呢,我们很少去用,因为一般orp数据库数据都很少删除和修改,更何况表了,对吧?更少做这样的事情啊,所以呢不常用,大家呢就忘了啊,面试官有时候突然就冒出来了。啊,突然就冒出来了,他就把你框进去了,给你下套对吧,实际上可以直接修改表做这个事儿,但是你忘了这个事儿,你就说要重新建表,这个就不对了啊,能懂那意思吧,就是一些小细节啊,有时候面试的时候真抠细节啊。好,这是我们的第二个查询。
我来说两句