00:00
好,那看看衍生维度是什么东西啊,衍生维度呢,呃就是说呃,它其实也是相当于是一个什么呢?它也相当于是一个这个类似于嗯呃,他也相当于是一个什么呢?也相当于是一个类似于咱们那个减脂的这样的一个操作,呃就是说我们呃如果说使用衍这个衍生维度之后呢,那我后期会为什么呢?就是我计算的时候呢,我会诶会少计算很多的qbo。就是我的计算量会变得很小,如果说我使用衍生维度的话,计算量会变得很小,是这样的啊,那这边这个衍生维度到底原理是什么呢?在这呢,有它这个原理,但是这个原理呢,你现在也别去看一个比较抽象,你看不懂,我们先来看一下什么,先来看一下效果,看看这个衍生维度它的效果是什么样的啊,我们来打开这个麒麟,然后这边呢,呃,我再去新建一个CU吧,再新建1Q,咱们做一个对比,做什么对比你看啊,之前咱这个cube当中,我是不是所有的那个维度我选的都是呃,普通那个normal的呀,对吧,那这回我再建一个,我全选什么呀,全选这个,呃衍生的全选D的,然后OK,点它,然后你一个Q吧,那这边呢,出自model还是之前那model名字呢?我这位叫做de。
01:13
RIQ。衍生的,咱们衍生的啊,那接下来呢,点击这个。我给它放这边吧,诶放下边吧,我看这个信号就行了,要我怕那个网又不好,然后点击这个下一步,接下来我们选这个dimension啊,那这回选dimension,我们跟之前还选一样的,有他那下边呢,有这个他们俩。那下边呢,我再选一个这个,呃,Region name下边就不选了,对吧,然后这时候大家注意,你看我这我全选这个derived。全是derived,那实时表当中是没有这个选项的,咱们不用看了,好,那现在点击OK,点完之后呢,大家来看一下啊。诶,这怎么还是normal呀?哦,它默认是那个derive是吧,那我再重新改一下啊,再重新改一下来啊,这个有点那个什么了啊derive,然后这边的derive,那这个全部derive啊,然后点击这个OK,好,那也就是说我这三个维度,维度表当中的这个三个全是derive,因为事实表当中只能是no,那个不用不能选啊好了,那这个完事之后呢,咱们点击这个,呃,点击next.n。
02:14
下一步好,那加measure,那measure呢,我们也加一个同样的吧,随便写一个啊加一个sum,然后下面呢,选我们那个字段,然后点击OK,点击next,然后这边不用管next这里边呢,咱还是不用管,然后点击这个N,然后最后呢,咱们点击next,然后点击save,保存yes。那现在这个呃,衍生的这个维度,咱们是不是也是给他呃衍生的这个Q吧,咱是不是也也建好了呀,那建好之后呢,咱这个就不算了啊,我们看一个东西给大家看一下这个东西是能点的啊这俩Q吧,你比如说点一下这个小三角,点完之后呢,下边会出来这个cube的一些详细的信息,那我们现在看一下最后这个planner。这个净化器净化器啊,点烫。注意我现在看的是谁,是咱们那个之前那个normal的那个啊,点它点到这儿之后呢,会出来一个这样一个图,那这个图呢,叫做这个旭日图,那这里边儿大家来看一看啊,这个东西怎么去看,我们指向中间这个东西。
03:10
指向中间这个,中间这个圈呢,你看这有一个name name是什么?是111,四个一,四个一是什么意思?就是那个q Bo的ID,这是四个维度都有的,往外边呢,是三个维度的,再往外是两个维度,再往外是一个维度的,对吧?然后它一共有几个q Bo的呢?一共有15个,15个怎么来的,15个是二的这个,呃,四方减一等于15。对不对,那其实在这大家也看出来了,我们麒麟它本身是不是根本就没去统计那个零维的呀,因为零为那个实际上没有太多的意义,他自己都没统计啊,所以说我们那个你把它算在里边也行,不算也可以,好,那这个完了之后呢,我们,呃看下一个,咱们看我们刚才见的那个衍生维度的,它的这个plan什么样的电大。诶,你会发现我明明选的维度是不是都是一样的,都是四个,那刚才那个就是有15个qbo的,那他呢,就只有这个七个qbo。
04:03
对不对,那这个七是怎么来的。为什么只有七个呢?这怎么回事,这个呢,其实就是咱们那个所谓的衍生维度发挥了作用了,它发挥了作用了,是这样的,那七是怎么来七按照我们那个公式是不是应该二的三次方,诶,减一等于七啊对不对,那这个三是怎么回事呢?我们来一起看一看,这个到底怎么回事呢?咱们还是点开action,点击edit,然后点击next。然后来到这个位置。大家给看一下啊,我们这边是不是选了这个衍生维度了,谁是衍生维度,那它俩是不是都是衍生,那下边这个呢,它也是衍生维度。也是衍生维度,然后这个衍生维度它的原理其实这样的,只要大家要注意,只要你的维度,只要你的维度是衍生维度,那OK,我进行Q吧,构建的时候,我就不按照你这个维度去构建了,而按照谁去构建呢?按照你的指导连接条件去进行构建。
05:00
也就是说这边咱们这边是什么,这边是不是在这个用户表当中,我们有两个维度都是衍生维度啊,那对他俩进行构建的时候,我实际上都不用这俩维度,用的是谁,用的是这个ID,也就是谁,也就上边这个外键,相当于是U的ID用它构建的。对不对,那也就是说我两个实际上算的时候只算一个。那再往下呢,你看谁,我这边下边还有一个,还有一个是这个,呃地区表,地区表是不是也是衍生,那衍生算的时候也不按照他算,也按ID算,那也说呢,这边是按照谁按照这个province ID算,那其实综上所述,咱们这边真正去构建cube的时候,是不是就是按照他们仨去构建的呀。对不对,一二。三那最终是不是Q8等于是二的三次方减一等于七个呀,那其实这次衍生维度它的原理。它原理啊,那这个衍生维度实际上啊,它是能够特,就是能够那个大量的减少咱们这个q boy的个数的,你想一想为什么啊,我这儿呢,因为选的维度比较少,那假如说我在一个维度表当中,我十个维度,如果诶都是这个normal格式。
06:07
那你去计算的时候,你是不是就得二的十次方这么去算,那如果说你这里边十个维度,你用的全是衍生,那你这十个是不是就等于一个算等于二的一次方是不是就是少很多呀,对不对,那所以说这边这个衍生维度呢,实际上是能够大量的减少咱们这个计算的计算量的,能够大量减少计算量的是这样的,这是它的这个一个特点,它一个特点,诶但是呢,这个衍生维度虽说能够大量的减少计算量,但是呢,这个东西其实没有我们想的那么厉害。没有想那么厉害啊,你你你就记住一句话,你就是出来混呢,迟早是要还的,迟早要还的,也就是什么,你现在不算,你现在不算对不对,就是你构建的时候不算,那什么时候得算,你早晚得算,你查询的时候是不是就得算了呀。对不对,你早晚得算啊,哎,就是这样的,也就是说使用衍生维度呢,我们构建的时候,你可以那个少一点计算量,但是你换来的什么,换来是你查询的时候,你要计算的就比较多了,那你那个时候呢,是不是延迟就会低一些呀,延迟就会低一些,所以说这是衍生维度它的这个一个特点。
07:10
相当于是这个算的快,但是查的慢,好这是所谓的衍生维度啊,那衍生维度它的原理是什么样的呢?我们来看一看,也就是他那个后续是不是要进行这个,呃,需要查的时候要计算啊,那那时候怎么算的呢?我们看看它的原理,我这呢画了一个PPT来模拟一下这个衍生维度的构建和计算,咱们来看一看,打开。那大家跟我一起看一下啊,那现在呢,我们这是我们什么呀?这是我们定义cube当中的那个事值表和维度表,Fact和这个STEM,那这个DM呢,是这个A表,是A表啊A表,那这个FA表呢,这个事实表就是它,那大家看一下这这边他俩关联的关系,是不是用aidd去关联这个A表的ID啊,是这么关联上的,关联上的啊,那我们看看这个现在的我的需求是什么。这个下边这个东西不用看啊,这个东西现在出来的不合适,我看它看这个位置,那咱现在的需求是谁?我们的需求是分析诶count c跟E之间的关系,也就是我后续我写circle,我会查什么样的circle啊,我会写诶select from这个表,Select什么东西呢?Select e,然后加上这个count c,然后表,然后后边呢,让谁让这个fact表跟这个表进行draw,然后搁入外,对不对,这是我要后续做的查询,我要做查询,那呃,如果是这时候我们去选这个E这个维度的时候呢,我把E给它选成了什么,选成了衍生维度了。
08:31
现在E是衍生维度啊,那既然是这样的话,我们后续构建的时候,它是怎么构建的呢?前面讲了构建的时候是不是用那个外键去构建啊,对不对,也就是用它用谁啊,其实用它啊,用它跟这个C是不是进行构建,是不是这么去构建的,那最终我得到结果其实就这样的,那既然是count c count c,那就是说诶,它是不是对应一个一,然后二对应一个一,三对一个四对一啊哎就是这样,这是我们构建的时候这么构建,那我们构建就是这么构建,应该大家能明白,那我后期我计算的时候怎么办呢?因为我后期我最终是不是要查这个东西啊,对吧,那查的时候怎么办?查询的时候呢,你还得再把谁啊,再把这个诶ID呢,你还得再给他替换成这个E才行。
09:13
因为我最终想得到的是E和count c之间的关系,对不对,也是这是你想要的这个结果,那也就是说需要去替换一下,那这个替换的时候,它是怎么去替换的呢?诶其实很简单,咱们这张表里边你看啊这个ID。这个ID是不是就是这个ID对不对,那ID跟E这之间是不是肯定有唯一的对应关系啊,我一是不是对应一个E,二是不是对应一个ec,对应一个E对不对,那实际上也就这样的,有一个这样的一个相当于是一个映射关系吧,就是说你给我一个AID,我能够给你返回一个E。对不对,它是能返回的啊,那根据这个对应关系呢,我就能替换了,那替换完之后,你看这个结果它是不是有点不太对呀。怎么不太对,你看这个位置。咱们这个A是不是出现了两次啊,对不对,那按照我们这个查询的这个这个要求是什么样的,我最终返回的肯定是什么,肯定是你最终是格入BY亿吧,相当于是格入百亿,那是不是一个亿只有一行对吧,那这边很显然这是不对的,所以说你得干什么,你是不是还得再计算一下啊,对不对,那也就说你你当你之前没计算,那你后续你再计算,那这时候还得计算。
10:18
那这时候咱们还得再做一步聚合,才能最终得到我们想要的这个E和count c的结果。才得到这个结果,那这个就是咱们所谓的衍生维度,它的这个计算和查询的原理,计算和查询原理,OK,那衍生维度咱们这个原理就说完了啊,那说完之后,那我们这个衍生维度,呃,建议大家怎么去使用呢?呃,就是建议大家呢,呃尽量不要去使用啊,就是说这儿其实也跟你说了,虽然衍生维度具有非常大的吸引力,但这并不是说我们所有维度都得变成衍生维度。因为什么?因为我们后期啊,会进行这个聚合,聚合是会降低咱们这个查询延迟的,就是会会提高这个查询延迟的啊,那会查的比较慢,那所以说什么时候你再去考虑使用这个掩藏维度呢?就是说除非啊,当你这个集群的这个,呃,那个数据量太大了,我导致过什么呢?因为咱们这个离线计算是不是都是晚上算啊,就是说我这个比如说半夜12点半开始算,那第二天咱们上班之前,比如说九点或者是八点多,你或者十点上班之前,能把这一天的数据算完,那就可以了。
11:21
能算完那就行了,对不对,那如果说你这个计算的时间是充足的,能算完,那OK,你就不要去使用延伸维度了。对不对,因为我得保证什么,保证我查询的延迟得低才行,对不对,那如果如果说你这个,呃,在这个12点到,比如说到第二天上班,上班的时候,你这一段时间,如果说实在是不够用,不够用的时候呢,再去考虑使用这个衍生维度,再去考虑使用衍生维度啊好,那这就是所谓的衍生维度,呃,咱们就说完了啊好把视频录一下。
我来说两句