00:00
那我们再看最后一个啊,Grow by增加了什么?With roll up cube total,这是干嘛呢?不知道大家还认不认得。Have里面有没有类似的操作呢?是不是到现在都忘光了是吧?呃,咱们have里面是不是有一个函数叫什么group set,对不对?这是不是做一个多维分析的,那其实这几个有什么用呢?我简单给大家总结一下啊,嗯,再补在后面,首先这个roll up叫上卷对吧,上卷,呃,Cube呢,就是多维分析,Total呢,总计什么意思呢?我举个例子啊,比如说咱们写的一个语法是这样,That什么什么什么,写了一堆from什么什么什么,然后呢,Group by,呃,比如说AB啊,假设有两个维度呗,这是不是根据两个字段去分组啊,那么你想想咱们分析的时候。
01:06
什么叫多维分析?我们先看这个,我是不是希望根据AB group by分组的一个结果,那同时我也希望知道只根据A分组的一个聚合结果,同时我也想知道根据B分析的一个聚合结果。那同时我也想知道,呃,我不做分组的一个聚合结果,这个是不是不同的维度啊。对吧,也就是说通过A跟B这两个字段,咱们可以有四种组合是吧?这就是一个多维分析嘛,不根据不同的维度做一个T,呃,Group之后呢,再去做一些聚合统计,那你想想,呃,咱们要实现这种功能,比如说根据AB2个字段做多维分析,咱们得写几个语句啊。咱们是不是得写这样至少要写四个。对吧,是不是应该这样。
02:01
后面这个就没有goodbye,是得写四个语法,然后呢,怎么把它拼接到一张表啊,是不是union。是不是得这么写呢,同学们?这是不是就实现了一个多维分析呢?那咱们汉里面的所谓的group。SE。它就是类似的一个功能嘛,它也有上卷什么的,那我们说一下这个上卷是什么意思啊,上卷就是说我的维度是嗯,来我单独写啊,我写在上面吧,维度是A,然后呢B这两个,我需要根据这两个维度做一个上卷,它其实就是什么呢?Group,呃。A,然后呢?A跟B。这样子,其实还有一个就是什么也没有,大家可以看到吧,也就是说前缀必须是从第一个维度开始,你不能跳过A。
03:05
直接从B开始,那不叫上卷啊,所以咱们的。这个。上卷就是从最开始字段,从没有到有,再到多个,必须按照顺序来对吧,必须是group的,呃,多个维度的前缀啊,那什么叫多维分析呢?就是咱们下面那一个,先一个group by AB,然后还要有什么呢?还有group by AB还得有group by b还得有group,啥也没有啊,就是所有的情况他都得有。啊,所有的组合他都要分别去做一个统计,那这个总计是什么意思呢。就是。Group by,呃,A跟B,然后呢,啥也没有。啊,那那行,咱们把这个啥也没有也表示出来呗,省得你不让我再写啥对吧,其实就是这样,那你想想这才两个维度啊。
04:11
其实咱们自己写的对吧,你根据不同维度group,然后做一个union union all。你这样写起来circle是不是很长?那你想想,如果有三个维度呢?我这个多维分析有几种情况,你稍微自己想想是不是ABC,是不是AB,是不是A,然后就各种各种组合啊。就AB也行,AC也行呗,那BC是不是也行啊,就各种维度组合都要呗,那大家想想有几种组合呀。如果三个字段是不是二的三次方等于八种?对不对。那如果是十个维度呢?你想想你得写写多少个?多少个分析,然后union or一下是不是很麻烦,对吧,但是所以他给出了这个关键字,比如说cube。
05:00
那就行了呗,它会自动把这些情况都算进去啊,都算进去,那上卷也一样的,你维度一多,你不可能一个个写出来,一个个去做一个union all,对吧?不可能的,那我们也可以看一下have呗,have.org,点阿帕奇点org,然后点哪个language menu。呃,看一下它的语法介绍呗,好吧。嗯,我们看一下放大。这里有一个我找找啊。啊,这里。是一个。多维分析对吧,还有一个上卷,那我们点进来它的语法叫什么呢?叫group set。来,我们随便看一个呗,看最多的这个吧。嗯,看这个。嗯。你看它就是group by AB,然后呢,Group says,后面要自己写不同的维度组合,相当于说原本你要写这四个。
06:05
后面下面还有个我拉下来一点啊,你看这个是什么?Grew by AB,这个grew by AB now grew bynob。还有呢?这个就没有group by了,对吧?那其实他们之间是什么union起来,你正常要写这么多语句,它只需要一个grouping sex,然后呢,把不同的group by组合,你把它列出来就行。啊,这是help的一个用法,对吧,但同样的,虽然已经简化了一点,但你想想,如果我有十个维度呢?你现在是两个嘛,二的二次方,就是写四个组合嘛,那十个维度是不是二的十次方,那你得写多长啊。所以呢,他也同样给出了一个什么呢,你往下翻。呃。诶。找找啊。
07:00
哦。我们拉到最上面,点这个QB跟low up。你看这里啊,在这儿是吧,你看啊,比如说有三个维度,那如果咱们正常写得写几个,你自己瞅呗,这里都给你列出来了,对吧,三个都有的,有一个有两个的,有三个组合,然后三个分别各自一个,还有一个空的,是不是得写八个呀,二的三次方嘛,你数一下啊,那这时候我们可以用什么代替呢?With cube。它就等同于我们把所有的都列出来,这个所以说我们的QB就是维度多维的意思,对吧,把每个维度我都聚合一下,那还有一种叫什么呢?Roll up,你看也是这三个维度,它有哪些组合呢?是不是都是要么啥也没有要么。因为咱们是ABC对吧,三个字段我们说必须是前缀,你只有一个的话,那只能是A,只有两个的话,那只能是AB,不可能是AC,对吧,必须是从前往后,那如果三个都有,那就是ABC。
08:05
那替换这种写法,它用的是什么?With?Roll up对吧,就是方便的一个写法而已啊,这个相当于说咱们也回顾了一下has了,因为我相信可能大家用的不多的话,到这一块也都忘光了啊。行,这是咱们一个介绍啊,关于这个多维分析它的支持的一个功能。那我们来试一下呗,呃。先把整个数据删掉,对吧,那就删了呗。这个是不是删掉WHERE1等于一嘛,那就什么都删了呗,好删就删吧,那我们再重新插入这么多条数据啊,重新插入这么多条数据,那在之后呢,咱们开始做一个什么,这是什么上去,它是从右至左去掉维度进行统计。
09:02
什么叫从右至左,我们看一眼就行,你看呃,咱们的语法呢,我看看啊。是不是group by什么idskidd啊,是不是这两个维度啊,对吧?呃,ID跟s kidd,你看那这一块代表什么。是不是group by ID SKU ID啊好,那在下面这一个呢,你看看这是空的对吧。因为什么它是个字符串嘛,我们说我们建表的时候,它并不是一个可为绕的类型,所以呃,删掉的话,它会给个默认值,字符串就是一个空的字符串,所以你看到啥也没有啊,那这个相当于什么呢?Group by ID对吧?那其实这个是不是相当于说把它给干掉了,所以它我们是什么,从右至左挨个减少维度,那在最后一个大家可想而知应该是什么,我没显示出来,是不是应该谁就剩一个了再去掉,是不是啥也没有啊。
10:09
对吧,那你再看往下是没有。呃,我们说ID是整形默认值是零嘛,对吧,那这个是空串嘛,这个就是一个总计能理解吧,另外他这么排的方法有什么好处呢?就是说比如说你ABC3个维度你上卷。第一个是根据三个维度。去掉一个,接下来是不是AB啊,再去掉一个是不是根据A啊,再去掉一个是不是空啊,对吧,那这种有什么好处呢。你看啊,比如说我要上ID1,呃,我看看101呗。它是不是可以通过上面这两条相加得到?这两个相加不就是3000吗?是不是直接得到它,你需要再重复算一遍吗?是没必要啊,对吧,它的由最细的力度到粗的力度是很简单快捷的,再往后你是不是啥也没有啊,你是不是直接可以拿上面这一些加起来就好了,你没必要每条数据重新算一遍呗,对吧,这也是他那个底层优化的一个地方啊,可以用到优化的一个地方,他没必要每一个维度计算的时候都重新算。
11:20
没必要啊,这是上卷啊,上卷就。之后加一个waves roll up。那我们再来看看多维分析cube,呃,这边是什么呢?就group by2个字段,然后呢,加一个with cube,那我们说了,它是把每一种组合都列出来来,我。弄出来来。我们看一下啊,那这个是不是相当于什么呢?Group by ab2个字段呗,那这个呢。是不是其他组合group by a呀?
12:03
对吧,那下面还有两个大家能看到啊,那其实我们不看也知道它是什么和BYB后面这个呢。是不是一个空啊。是不是把这两个维度各种组合都弄出来了,对吧,他先是什么,先从右往左去,再从左往右去,对吧。啊,这个你就咱们就不用去担心了,对吧。这个就是cube多维分析各种组合啊,那如果是三个字段,大家觉得有几个?有几种不同的维度统计啊,是不是二的三次方八个对吧,大家会算啊,也会算。那还有一种叫with total,我直接在这改就行了。total total就是什么维度也不管来。啊,Totals,它只有什么。
13:00
必须力度的列出来,还有一个什么,所有的汇总,这个叫小总计啊,算了一个总计。就没有中间那些group by a group by b,没有这些啊,没有。只有两个,他只有两个。这个是因为可能大家呃呃不太熟悉,所以咱们多介绍了几句,多啰嗦几句啊,这个其实。太也有嘛,对吧。
我来说两句