维度与度量
维度就是观察数据的角度。比如电商的销售数据,可以从时间的维度来观察,也可以进一步细化从时间和地区的维度来观察。
度量就是被聚合的统计值,也是聚合运算的结果
给定一个数据模型,我们可以对其上所有维度进行组合。对于N个维度来说,所有组合的可能性有2N种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物化视图,称为Cuboid。将所有维度组合的Cuboid作为一个整体,被称为Cube。所以简单来说,一个Cube就是许多按维度聚合的物化视图的集合。
Cube模型
Cube模型是以多维数组的方式,物化到存储系统中,加快后续的查询。<br>
它是一个数据立方体,类似魔方的形状。不管从哪个维度查询都很快,而且查询时各个维度可以灵活进行组合。
因为提前做好了聚合运算,所以性能上非常优秀。但生成CUBE需要大量的时间、空间。维度的预处理也可能会导致数据的膨胀。
一个多维数据集称为一个OLAP Cube,Cuboid是其中的一个组合数据集,例如城市、品类、月份这三个维度,形成共八种组合的数据集。<br>
Cube 优化
衍生维度
如果从维度表主键到某个维度表维度所需要的聚合工作量非常大,则不建议使用衍生<br>维度。
缺点:
衍生维度用于在有效维度内将维度表上的非主键维度排除掉,并使用维度表的主键(其<br> <br>实是事实表上相应的外键)来替代它们
使用聚合组
强制维度(Mandatory)
强制维度自己只能出现和自己有关的如A,AB,AC,ABC
层级维度(Hierarchy)
使用A->B作为层级维度 :A ,C,AB ,AC, ABC
联合维度(Joint)
使用[AB]作为联合维度:C ,AB,ABC
Cube 构建参数调优
Kylin 根据 Cube 情况自动设置 Spark 参数
根据实际情况手动设置 Spark 参数