kylin 聚合组优化
--------1.简单情况--------------
1.强制优化
2^(N-X)
2.层级优化
将N个维度中X个维度设置为层级维度,则cuboid个数减少到
(X+1)*2^(N-X)
3.联合维度(Joint Dimension)
2 ^ (n-x + 1)
:从4个里面有三个
2 ^(4-3 + 1)=4
--------2.最优剪枝--------------
解释:所有维度都能被剪枝
1.必须维度+层级维度(层级数量+1)
如包含A、B、C 三个维度
必须维度:A ,M=1
层级维度:B、C (H=(X+1)*2(N-x)-1=2)
number = M + H= 3
2.必须维度+联合维度
包含维度:A,B,C,D
必须维度:A ,M=1
联合维度:BCD J=1
M为必须维度数量=1,J联合维度数量可以为多个
number= 2^(M + J -1 ) = 2^(1 + 1 -1) =2
3.1层级维度+联合维度-1(1个层级维度+1个联合维度)
包含维度:A,B,C,D,E
层级维度:A,B,E
联合维度:C,E
n为层级维度数量3
number=2n+1 =2*3 +1 =7
4.必须维度+层级维度+联合维度
包含A、B、C、D、E
必须维度:A
层级维度:B、C
联合维度:D、E
z为联合维度数量:
m层级维度数量
2^(z-1) * (2m+2)= 2(1-1) * (2 *2 +2) =6
--------3.非最优剪枝--------------
1.必须维度+层级维度
包含维度A、B、C、D、E、F
必须维度: A
层级维度: B、C
所有维度数量:A;B,(B,C);D,E,F 共5个
解释:把多余出来的3个维度,D、E、F 看成是三个独立的联合维度
z=3
所以可以使用该公式:
2^(z-1) * (2m+2) = 2(3-1)* (2 * 2 + 2) = 24
2.必须维度+联合维度
包含维度:A、B、C、D、E、F
必须维度: A
联合维度:(B,C)(D,E)
所有维度数量:A,(B,C),(D,E),F 共四个
number= 2^(N-X) = 2^(4 -1) = 8
3.层级维度+联合维度
--------4.层级维度--------------
4.1层级维度-1个层级维度
层级维度:A,B,C
减去的1 为明细索引:
number = 2^(N-X) *(X+1)-1=2(3-3) * (3+1) -1 = 3
4.2层级维度-2个层级维度
包含维度: A,B,C,E,F
层级维度1: A,B,C
层级维度2: E,F
H1=2^(N-X) *(X+1)-1= 2^(3-3) * (3+1) -1 = 3
H2=2
number=(H1*H2) +(H1 +H2) = 11
整个聚合组优化结果:
(m x n) + (n +1) + n
多个聚合组安装要叠加
3.查看cuboid数量 需要查看的cuboid的group by固定的cuboid
select count(*) from table_name
group by A,B,C...