00:00
好了,同学们,那咱们这个modu创建好之后呢,那再往下就是创建这个cub,这个QB,大家还记得是什么吗?是不是咱们在讲的这个,是不是咱们讲的这个多维数据集啊,啊,大家还记别忘了啊,咱咱们这个前置概念里边给大家专门介绍了什么是olab的Q,好吧,那接下来咱们这个K里就要创建咱们这个modu的这个cub了,就是他先创建modeldu,然后基于这个modu你在创建对应的cub,而而而我这每个cube有多个QB的,大家还记得吧?那因此我们怎么创建cube呢?那咱们点开咱们这个图表啊,你会发现在咱们这个modu这一栏是吧?在这个module这一块只有一个module,但是我这个module底下它没有任何的Q。那你就可以点击这个new,咱们给他创建一个cube,点这个new cube,然后呢,在创建cube的时候,第一件事先让你选择这个modu,那就说明咱们这个cub是绑定在这个modu上的。
01:04
就是我每个module有自己不同的Q5,我每个modeldu有自己不同的Q5,一定要把这个关系给我捋清楚,好吧,那然后呢,我们就选咱们刚才串的这个model叫员工model员工模型。然后呢,员工模型选了之后呢,那再往下,你可以给咱们这个cube起个名字,那咱们这个名字叫什么呀?叫first呗,First是吧,我叫first cube咱们也别大写了,咱们就叫first这个下划线。Cube,可以吧,First first q。因为它它这个地方是支持下划线的嘛,啊,所以咱们就给他,咱们就不要以这个驼峰命名了,咱们就以下划线这种蛇形命法来,它命名叫first q可以吧,然后呢,这个描述可以不写,直接点击。下一步。然后呢,第二步也是让你选择这个门维度字段。
02:00
注意了。咱们在的时候选择了一个维度字段。然后在创建Q5的时候,又让咱们选择维度字段,那这两个维度字段有没有什么关系啊。他俩是有关系的,什么关系啊,包含关系。什么叫包含关系啊?你在你创建modu的时候,就比如说我对A这个字段是吧,给它定义为了维度字段。是吧,我对我的abcd假设啊,ABCDABCDEF6个字段,我给它定义成了维度字段,那你在,那你基于这个module在创建QB的时候,你在这个位置,你在选择这个维度字段的时候,你只能选择ABCDEF这六个字段。就是一个叫定义,你可以这么理解,一个叫定义,一个叫选择,就咱们在这个地方,咱们在创建QB的时候,选择的门才是真正的那个底门神,为什么这么说呢?你就比如说。
03:02
咱们在创建modu的时候,我给他选了ABCDEF6个维度字段是吧,但是我在创建Q的时候,我只给他选了ABCD4个位置子段。那么好,你将来这个Q补它只会针对abcd这四个维度,维维维度字段给你随机组合,组成对应的qbo,大家刚刚给你们讲完一个一个公式,是不是有一个二项式公式叫二的N次方减一啊,如果咱们在这个地方选择四个维度次算,那你将来你这个Q补它就有二的四次方减一,是15个q Bo a的,而不是这个二的六次方减一,就是你在创建模的时候,只是对这个字段给它做了一个定义,我定义哪些字段是维度字段,我一旦把这些字段定义好了。诶,那我在我的这个创建cube的时候,就可以基于你定义的这个范围去选择了,啊,这个范围这个理论我希望你们能听懂,好吧,那在这个时候我就点击这个爱的S。
04:14
大家可以看到,在明显咱们刚才在创建modu的时候,那些字段它都出来了,它都出来了。哎,那我就可以挑一挑了,就比如说哎,我认为我的这个事实表的这个drop是一个是一个底分式是吧,我要基于这个drop,我我给他选选一个,然后呢,我给他这个领导我我我选一个,然后呢,这两个它这个注意啊,这个DEPT是两个表连接字段,那既然是连接字段,你选哪个都行,那就比如说我我选我的这个事实表的dp d no可以吧,那然后呢,我再选一下我这个维度表的D内这个维度表的d name是不是就是我那个,是不是就是我的那个,嗯。部门名称啊,注意选完这一块之后呢,有一个地方需要你们注意一下,哪个哪个地方啊,咱们在事实表的地方选的没有这两个选项,一个叫normal,一个叫d direct是吧,为什么呀?因为咱们事实表的维度字段,它都是正常的维度字段。
05:14
那同学说老师你这个正常你还不正常啊,大家看啊,咱们这个维度表的字段,你这么一选,它默认还真的没选normal某,他选的是derived,这个derived是个啥呀,这个derived我我我们我们这块有个学名叫延伸维度。延伸为主,那如果我选了这个有什么区别啊,现在我们先不讨论,我在底下给你讲这个优化的时候,我会单独抽出一个章叫章节给你讲一讲什么叫延伸维度,那现在既然我们都不知道什么是延伸维度,因此你先别选,你就给我选成normal,那这样一来是吧,咱们这么一个CU补,我我这有我我这个Q补是不是具备了四个正常的维。
06:01
那你把这个normal选中之后呢,你点击OK。那这样一来,我就我我我当前我这个cub,我就得到了我这四个正常的维度字段啊,就dimension字段好吧,Dimension选好之后呢,直接点击下一步。在这一步里边是吧,叫measures,这个measures大家应该知道吧,什么呀,叫度量值,咱们刚刚讲过是吧,Dimension是维度,那这个,那这个measure就是量值呗,度量值字段,那你看大家可以看到它默认带了一个什么度量值啊,他带了一个抗新啊,他给咱们带了一个抗新这么一个度量值。那我我得给他再加一个注意,大家应该也想明白了,咱们在这个地方是不是要选多量值的,那咱们在刚才在创建这个model的时候,是不是也选过一个增长折算,咱们是不是定NA2个还记得吧,一个叫工资salary,一个叫那个什么cum是那个是那个奖金。注意咱们这两个跟它有什么区别啊,也是一样的,咱们这个地方叫定义,就是我把这两个字段,我给它定义成度量字段了,那你在这个时候你究着你用不用,究竟你是否要针对咱们的对账字段给它构建你说了算,就比如这个时候我认为这个奖金我用不到,我只可以选一个salary。
07:15
啊,但是如果你想在这个地方选择salary,那那你在构建me的时候,一定得先把这个salary你给它选出来,选成这个度量者字段,就先把这个salary你给它定义成度两者字段,那我在构建cube的时候才能在这个地方给它添加这个salary,要把这个给我想明白好吧,那这个时候咱们怎么办,我就点这个添加mirror。然后呢,我给我这个mirror,我给它起个名字,咱们这个名字叫什么呀,我就叫some salary sal可以吧,然后呢,咱们你看这块你可以求萨,你可以求m mix count都可以,那咱们一般求sum,我是不是要基于咱那个部门名称分组,我想求一求,或者每个部门的这个工资和啊,因此咱们这个地方咱们求的就是萨。
08:03
然后呢,这个列我就选C啊,它有它有两个类型,一个叫列,一个叫常量,常量值咱们就选这个列就可以了,然后呢,在这一块我你看我在这一块我这么一选,我能选到两个字段,大家知道为啥吗?就是因为我在构建这个model的时候,我把这两个字段给它定义成了度量者字段,那这个时候我就选一下我这个salary。好吧,那咱们这样一来是吧,咱们点个OK,那咱们这个度量值也就填好了啊,就咱们现在咱们这个Q51共有两个度量值字段,一个叫com星,一个叫sum salary,好吧,啊,那这样一来,我这个度量值跟这个都定义好了,你就可以点下一步了。下一步有个什么呀?有一个刷新设置叫refresh settings。那这个刷新设置是啥意思啊,你看啊,它有一个七,有一个28。我需要给大家讲一下啊,咱们这个刷新设置刷新的是个啥呀,同学们,它刷新的是咱们当前这个Q5在h base底层存储的那个H文件。
09:10
H base是吧,大家都知道我的这个h base5,我的我的h base是不是有一个表,我将来我这我这一个表是不是有多个h file啊,我的多个h file是不是还可以合并啊。还还还记得吧,我者多个HL是可以合并啊,那就比如说咱们这个Q5,将来我每天都构建一下,我每天都构建一次,那就比如说你每天构建一次,它都是一个HL,你每天构建一次,就是每天一个HL,那我这么多的HL它什么时候合并呢?诶,咱们这一块有什么呀,有一个七天一小病,28天一大病,注意七天一小病一下子,然后28天一大病一下子,这什么意思啊。就是就是我当当我这个表有了七个H费用了,就是经过七天了,那怎么办,就12345啊六七有了七个了,就是我当我第七天的时候,我会先把我这七个HL给它合并成一个大的HL。
10:05
是吧,那我第一个七天,第二个七天,第三个七天等到是吧,这这三个大的有了,那后来又来小的1234567。当我已经有三个大的了,就21天了,然后22 23 24 22 25 26 27 28,等到28天的时候,他会怎么着啊,他会把你这七个小的合并成一个大的,然后呢,再把这四个大的给你合并成一个最大的啊,这个就叫七天小病,28天一大病,它这个决定了我这个h space底层的这个文件合并问题,大家一般这个事就不用管,你需你就选取它这个默认的七天一小病,28天一大病就可以了,好吧,所以说这这这个选项就这一页。这一页我们采取默认不做任何修改,然后直接点击下一步啊,在这个advance的C点里边叫什么呀?叫高级设置,那在这个高级设置里边,现在我们也看不懂是吧,因为大家现在根本就不知道我在我可以简单给你提一嘴好吧,高级设置里边你可以设置什么呀,可以设置聚合组。
11:09
你可以设置这个ROK,你可以设置一些别的,那大现在根本就不知道什么是聚合组,所以说这个高级设置咱们也不设置好吧,咱们还是全部采用默认设置,那么直接点击下一步。那在这个构建cube的最后一栏叫什么呀?叫configuration。这叫复,就是复写的配置信息,你如果想要针对咱们这个Q补设置一些参数,你可以在这个地方你给它加上一个property,那这样一来它会覆盖掉你原本的那个图动参数,咱们这个时候是吧,我也不用设置什么参数,所以说这一列这一栏我也不设置啊,直接点击下一步注意了啊,咱们后边三栏。啊就是五啊就是4563个操作,我都是采采取默认设置,直接点击下一步,然后呢,第七步就是一个展示页面,它会你看一看,他会给你最后最后给你展示一下你当前的这个cub的它的这么一个,嗯。
12:07
展示信息,你把这个展示信息你看完之后呢,你就可以直接点击这个save,点击这个保存。点击这个yes,哎,那在这个时候是吧,咱们就得到了我的这么一个cube叫first cube,就是我在我这个员工模型下边有一个first cube,大家应该能看懂吧,员工模员工模型下边有一个cube啊那那那然后呢,你点击你这个first cube,你就可以查看你这个cube的详细信息。啊,首先你可以查看它的字段是吧,在这个在这个GRD这个栏里,你可以查看的这些信息,然后呢,在这个circle里边,你可以查看咱们这个底层QB的QB的这个底层参考。好吧,然后JA森你可以看一看,然后notification通知这个不管它,存储这个不管它,然后呢,P plannder plender是一个执行计划,你可以在这里边,在这里边看完,你可以看一下咱们当前这个QB有多少个q boy的,因为我说过我我我我我的这个QB,我一共有四个正常的维维维度是吧?你既然有四个正常的维度字段,那我根据咱们那个公式就是二的四次方减一,那它一共有15个q point的,你果不其然,你一共看到了15个qvo的啊,这是一个南丁格尔玫瑰图,这个图是可以变化的。
13:27
大家可以点一点啊,点这它就可以变化的,能能理解吧,他他详细给你说明了,你是每一个q boy的都存了什么东西,大家可以通过这个ID,通过这个q boy的个ID来查看它,你就比如说中间这个圆形它是四个一,那就说明啊,中间这个圆形是四个维度都有的那个q boy的。那我这个圆形外边是什么呀?是四个,看大家可以看一下啊,是不是四个三个一的呀,你看啊,是有这个10110111,然后11011,然后1101,然后110,就是我这个四个一,周围这一圈是四个三个维度的,在外边一圈是不是有六个六个两个一的,能能看懂吧,11001010,然后呢,1001,然后0110,然后0101,还有这个000011,就是咱们咱们这一圈。
14:19
就是第三这一圈都是都是两两个维度的实际组合,那最后这一圈呢,大家自己看是不是变成了一个维度的是吧,一。这是也是一个,这也是一个,这也是一个,大家可以看这个位置是吧,只要它是深灰色,就说明它是这个维度的这么一个组合,所以这个东西是比较高级的是吧,正是因为咱们这个cube选了四个正常的字段,所以说它给你生成了15个QB。那这样一来,那咱们这个cub创建好了,但是它是不是还没有做这个预计算啊,同学们咱们说了啊,咱们的这个kin它是预计算,那它什么过程叫做预计算啊,就是你得把这个Q补你给我构建出来。
15:05
同学们啊,怎么把这个怎么把咱们这个cub这叫创建好了,你还没有给他构建,你没有给他build,那怎么做这个build呀,大家点开这个Q的这个action,在这个里边咱们有一个build,你可以点击这个build是吧,点击这个yes。点完之后你发现你发现好像当前页面没什么变化,那怎么证明它有变化呢?你得点开这个monitor,在这个monitor里边。你会发现咱们当前这个killing多了这么一个job,多了这么一个作业,多这么一个任务,知道吧,当前这个任务就是我构建我这个QB的这么一个任务。啊,你可以在这个页面,然后点这个刷新按钮,这这个process progress是它的一个构建进度,等它什么时候到100%了,诶那咱们这个那那那就说明咱们这个QB就构建完成了,只要这个QB构建完成了,那我这个K里就可以做这个circle查询了,为什么呀,因为咱们这个Q股构建过程就是那个所谓的预计算过程。
16:13
好吧,你也可以点击这个向左的这个箭头,它可以查看你当前这个QB的这个什么呀,你它可以查看你当前这个Q的一个底层的执行计划啊,只不过这个时候这个计划大家应该还看不懂,因为我们还没有讲这个,讲这个高级是吧,就讲这个什么构建原理你还没有讲,所以说你你可以简单看一看,就提前告诉大家是吧,咱们的这个cube是以这个MAP6的形式来构建的。啊,因为咱们这个构建引擎它没有选,他没有选,你没有选,它默认用的是MAP6的构建引擎,那因此这个时候你可以查看一下你的雅安,在你的雅安上会生成很多个关于kidding的这么一些任务,它会帮你跑这个map reduce的任务。
17:02
啊,那这个时候是吧,咱们来到这个位置刷新一下他的进度应该是会走了,他已经走了6%了是吧,所以说咱们这一块需要耐心的等待,等他这个执行成功才可以啊。经过这个五分钟的等待啊,我当前这个cube是构建成功了,怎么证明它构建成功了呢?首先第一步大家看这个progress是吧,它已经达到了一个绿色的100%,那就说明它成功了呀,如果他没有成功,他这个进度条是走不到100%的,并且这个进度条应该是红色的,应该是红色的,它就告诉你失败了,能理解吧,然后呢,这个是整个的这个构建的时间,它一共经过了这个五分钟,它构建成功了是吧,5.10分钟啊,是这个意思啊,就说明五分钟010秒啊,然后呢,你点开这个向右的箭头,你发现它的每一步。都已经执行成功了,那这每一步执行成功以后呢,你还可以查看这每一步的日志,就比如说我想看一下这一步它是怎么执行的,好吧,你可以点开这个日志,在这个日志里边,你在这个在这个框框里边,你可以看到它当前这个MA6他跑的这么一个输出的日志,好吧,啊,然后呢,你还可以点点开点到这个对应的Mr job里边。
18:21
那这样一来就来到了咱们这个雅安历史服务器的这个ME6的这个这个跑里边啊,因为咱们说了嘛,咱们这个kidding的底层的构建引擎,它要么是MAP6,要么是Spark,咱们没有用Spark,它默认就是用MAP6来这个跑,来这个跑好吧啊,那咱们这个创建cub构建cub就先给他讲到这儿,一旦这个cub构建成功了,那就说明你这个kding已经预计算成功了,那你就可以怎么办,你就可以使用这个K了,就这么简单,一旦你这个Q补构建成功以后,那咱们就可以用这个K来做这个预这个这个这个这个计息查询了,好吧啊。
我来说两句