赞
踩
kylin的维度组合默认的是2^n;但是在实际场景中简单的使用这种计算方式去计算生成的维度组合,对于维度数来那个超过40个的,那么生成的cubeId的数量是4096;如果维度的数量超过这个值,那么在构建和存储集查询方面都可能存在问题,此文章从以下四个层次来管理dinmensions:【以下所有的设置都是基于各司的业务设置,非通用模版】
设:共有维度10个维度:分别为A,B,C,D,E,F,G,H,I,J[其中维度A,B,C,D四个维度直接存在层级关系];
A:全国;B:省;C:市,D:县;E:单价;F:数量;G:商品;H:员工;I:评级:J:工资
1、聚合组(aggregation groups):
聚合组,主要是业务对于维度分为多类,之间不会有交集或者几乎没有交集的各个维度集合进行分类:eg:仓库管理者关注的是商品,出报告或者分析考虑EFG这几个维度;人事部关注的对象是人,考勤或者工资的定级等考虑的是HIJ这个几个维度组合;上层管理者年底想看一下某一个员工卖出了多少价值的东西,这个时候才会将EFGHIJ这几个维度同时用到,由于使用的频率低,所以这个结果不会预先处理好,只有到使用的时候实时计算。此时我们就可以分两个聚合组ABCDEFG和ABCDHIJ;来减少cubeId的生成。
2、必须维度(mandatory dimensions):
必须must,一定会出现的维度,每次查询都会出现的维度;eg:对于仓库管理员来说,在核查商品的时候,商品的名称及数量是他每次核查必须都关注的对象,那么在系统查询的时候这两个维度是必须出现的,这个时候就可以把FG设置成必须维度。此时的维度数量是2^(10-2)=256,2^(N-x),以此来减少cubeId的数量
3、层次维度(hirearchy dimensions):
层次维度,就是一些维度之间存在一定的层级关系,就像一个家庭,爷爷、爸爸、哥哥、妹妹等,这也算一个层次。eg:总公司想看一下各个地方的商品存储情况,此时的地区就可以以层级维度的进行设计;ABCD,此时生成的组合为A,AB,ABC,ABCD,*;5中cube可以用N+1的方式计算,以此来减少cubeId的数量
4、联合维度(joint dimensions):
联合维度,将多个维度绑定在一起,当一个来进行构建,在查询的时候这些维度总是一起组合查询;eg:管理层想关注一下公司的工资水平情况,此时需要关注两个对象等级和工资这两个维度,IJ就可以作为联合维度,2^(N-X+1);以此来减少cubeId的数量
综上、本文主要讲kylin构建cube的时候在维度设置部分,的一些组合的基本使用,下一篇将对这4个方面的混乱组合计算CubeiD的一些总结。对于文章中存在描述不当或者理论不正确的,欢迎及时指出。谢谢,一起学习一起进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。