00:00
好了,哎,那接下来我们来看一下咱们这个第五章啊,就是咱们这个cub的一个构建优化,就在你构建cube的时候,或者是在你这个创建QB的时候,你有没有什么优化手段,好吧,啊,第一个第一个手段就是咱们的这个延伸维度啊,延伸维度这说啥的呀,同学们。都我我们在这个创建cube的时候,大家都知道,咱们在选那个dimension的时候,是不是有一个normal,有一个延伸啊,那这一块,哎,这一章我就是要给你讲一讲咱们这个延伸维度到底咋回事,什么叫做延伸维度啊,延伸维度首先第一个问题啊,就告诉你啊,延伸维度它是一个不正常的维度啊,这个废话是吧,那我们再来看一下这个延伸维度有什么用,好吧,延伸维度它可以在有效维度内。将咱们这个维度表的一个主见。咱们给它排除掉,就是非主见维度,咱们给它排除掉什么意思啊,就是用咱们这个维度表的主键。
01:02
啊,其实就是咱们实时表相对应的外键来代替他们,那这样一来我这个kding会在底层记录一下你这个维度表主键跟这个维度表其他维度之间的一个映射关系,那这样一来我在你查的时候,我就可以把你这个主件翻译成这个非主键维度。并且我再给你做一个实时的聚合,这句话什么意思啊?如果大家看这句话没看懂是吧?首先我跟你强调一下啊,第一件事,只有维度表上面的这个维度,我们可以创建成延伸维度,就是那个事实表的维度,你只能创建正常的维度。他是这么玩的,大家想啊,你就比如说啊,你就比如说咱们有一张实时表,然后呢,我这个实时表这块有一张维度表是吧,我这两我就比如说我还有一张维度表,就比如说我这个A这这这是这是我的实时表。啊,然后这是我的维维表一啊,这是我的维表二啊维表二,那咱们将来这个实时表是不是跟两张维度表要进行关联啊。
02:03
你关联以后,你就比如说你这个维表上边我有两个维度字段是吧,首先它自己有自己的一个ID字段啊,那这一块有自己的一个ID字段,就ID1叫ID2吧,然后除了这个IDD2以后呢,我这块我有一个ABC。我有三个维度字段,那这一块我有个什么呀?我有一个EFG,我也有三个维度字段。如果说这六个维度字段在你构建cub的时候,你选的是正常维度。那么我这个king在创建对应的q boy的时候,会把你这些维度都得考虑上,就比如说ABCDEFFG是吧是吧,这六个是一种组合,就是二点六次方减一呗,二点六次方减一,那如果说你这个ABC,还有这个EFG,你选的全部是延伸维度。哎,那我的这个,那我的这个q point它的数量就会大大的减少了,你看大家可以算一下啊,二十六次方减一是多少啊。
03:03
二的,嗯,我算算啊,二的三次方是八,二的四次方是16,二的五次方32,二的六次方是64 64减一是63个Q。那这样的太多了呀,这这么多q boy的,我们在构建过程中速度会比较慢,那如果说这三个维度我给你创建成了延伸维度,那怎么办?我就那这样一来,我的这我的这三个延伸维度就会被我的K点认为它不是正常的维度,它会它会,那这个K会干嘛呀,这个K点会把你你你这个维度表的对应的主键。当乘级的维度,就比如说我,我用这个IDE来表示出来ABC,我用我个ID2来表出来EFG,那这样一来我的这个模型就是我我的我的这个Q补将来我只有两个维度。我只有两个维度,那也就是我的q point,就是二的二次方减一,就会从63个q point一下变成什么呀,变成三个q point,那这样一来,咱们这个构建速度会非常快,大家注意啊,使用这个延伸维度,它会大大的。
04:06
降低咱们这个Q5它构建的速度,也就是说咱们这个与计算与计算的速度会大量的减少,减少,那他为你那那现在有同学他不理解了,我为什么能用这个IDE来代表这个PC呢?那接下来我就给大家放这个PPT,大家通过这个PPT你可以看明白,为什么我能够通过这个维度表的主见字段来表示其他的非主见的维度,好吧,啊。那我们点开这个PPT给大家放一下啊嗯。你就比如说。咱们有一个aiddc,这是我的实值表啊,然后呢,我有一个ID be,这是我的这么一个,呃,维度表,那我接下来干嘛呀,我接下来首先啊,我们想要得到一个count c跟这个E之间的关系,就是我要go by e,然后count到这个C,这个这个都没问题是吧?那那都都都都知道它一个段啊,它是不是应该是A2B1C1啊,因为我是GOE嘛,我有两个A嘛,两个A那就是A2,有一个B就是B1,有一个C就是C1。
05:10
那现在啊,现在同学们如果说你直接把这个E当做正常维度,那我就得到了这么一个A2BECE,那如果说你把这个E给它当做一个延伸维度。他会怎么办呢?注意了,它不会把这个E给你构建一下,它只会把你这个E的这么一个ID给构建下,也就是说我这个ID就是11213141,然后呢,然后再得到这么一个表,就是得到你这个维度的主维表的主见,跟你这个非主键的这么一个映射关系,然后呢,再通过这个映射关系给你,就是在在你进行查询的时候,再给你进行勾一下。就比如说我是吧,我把这个ABCA再给你替换成这个1234,那我就得到了这个A1B1C1A1,那最终得到了我这个A2B1,就是我,我把这个ABC可以再给把这个1234给你替换掉,我得到这个A1B1CEA1,那最终我才能得到这么一个A2B1CE1,就是这一步是在你这个select查询的时候,就是你你在利用这个K做这个计息查询的时候,它才会帮你做这么一个转换,也就是什么意思啊,它相当于把这个工作量从这个预计算。
06:27
这一块给你分担到这个查询的时候来了啊,因此大家要明白,咱们这个延伸维度,它虽然具有非常大的吸引力,但是并不是说我所有的维度表的维度都变成,都得变成,变成维度就你要明白什么时候变,什么时候不变,什么时候不变。也就是说就就是给大家总结一下吧,我个人是不建议大家使用这个延伸维度的,为什么呀,因为你要使用这个延伸维度,你只会加快咱们这个计算的速度。然后你会干嘛呀,你会提升咱们这个查询的速度,而大家也都知道,咱们这个kli之所以能够特别快支持亚苗,就是因为我这个kding的预计算比较强大,那如果说你不让他预计算了,你只要他在查的时候都计算了,那就违背了咱们这个kding的设计原则,因此这个延伸维度我是不希望大家去使用的啊,我是不希望大家去使用的。好吧,那我们讲到这儿就给大家证明一下,这个延维度会更改咱们这个cubo的个数,好吧,怎么来证明这个问题呢?咱么这么玩,我给大家创建一个second cube,好吧,咱么在这个地方咱们点个new,怎么new cube。
07:36
咱们给他选下这么这么一个员,选一个员工模型,然后呢,咱们来上一个second cube。啊,咱们就是小写的是吧,Second q。就是第二个Q呗。那接下来咱们点下一步,然后这个dimension你要选了,你就比如说呃,我的这个市值表,你比如说啊,我值表选两个,我选上一个job,我选上一个MGRR,然后呢,我的维度表我选两个,我选一个d name,我选一个LC。
08:05
那如果说哎,我这那这样吧,我这个我这个实时表,我我这个维度表,我选三个,注意啊,那就选两个吧,因为这个是咱们这个关联字段,关联字段有可能会有影,会有影响,大家看好了啊,现在我选的我选的是四个正常的维度,那点个OK。那这个时候我点个next呢是吧,咱们选的是四个正常维度,并且选的是四个正常维度我点我点下一步,那这个坐量值我也我点下一步吧,这个我也下一步,然后最后在这一块我也下一步是吧,最后我下一步,然后我点个C步,那大家知道咱们一共选的是四个正常的维度,那我这个Q补它将来就需要构建这个什么呀,二的四次方减一个就是15个qbo,我来看是不是好吧,咱们点开这个,你点开这个plan,你会发现它的qbo的个数确实是15。啊,确实15个,那我们证明这个问题以后呢,接下来我我再给大家创建一个third的Q5,怎么创建,大家看好了啊,我你有一个new扣new cube,咱们给他选一下这个员工模型,咱们再来一个third是吧,TH啊third qbe,那这个时候我点下一步。
09:08
那这个时候大家看好了啊,这个底门神字段,我的这个,呃,我的这个员工表,我还选两个,我选一个job,选一个FGRR,然后呢。我的这个维度表就这个部分表我也得选两个,我选个D内,我选个LC,只不过这个时候我不选正常维度了,我选两个延伸维度,我说过这两个延伸维度它其实就是一个第一批DNA,就是咱们要把这个维度表的主键维度给它替换成这些延伸维度。那这样这个时候咱们虽然选了四个维度,它其实就是三个维度,我们怎么证明这个问题啊,大家点个OK,点完这个OK以后呢,大家可以看到我们虽然有四个维度,但是有两个是同一张表的延伸维度,其实它们两个值只能算一个,那这两个都是两个,那因此咱们最终这个qbo的它应该多少个,它应该是二的三次方减一等于七,那我们看一下是不是七个,好吧,咱们点个下一步,然后下一步,然后下一步,然后咱们在这儿也是下一步,下一步啊保存你会发现咱们的这个third的cube,它的plannder,它就是七个q point。
10:12
大家看啊,我们这个third cube cube跟这个second cube他们两个。他们两个的这个维度字段就是这个都是这么这么四个。那那如果你不选延生,那他就是15个Q波弈的,你选了延生就是七个Q波弈的,那你想吧,我这两个Q5在构建的时候,肯定是这个选了延伸的速度要快一些,不选延伸的在个在这个预见它在这个构建Q步的时候,在这个速度要慢一些。啊,这这个就是延伸维度的这么一个好处,好吧,就是它会加快你构建Q5的速度,也是咱们这个预计算速度会变快,只不过咱们查询的时候这个速度会变慢,因为你是延伸维度,如果我按照你的延伸维度真的go了,那我那我在查的查询的时候需要做一个主见跟非主键的一个映射转换,好吧,大家知道就好了,那这个延伸维度我就给他讲到这啊。
我来说两句