Apache Kylin CUBE 剪枝优化和cuboid数量计算公式总结

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...


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值