详解New AggregationGroup

本文深入探讨了Kylin中的New AggregationGroup概念,解释了Base Cuboid、includes数组和normal dimension等重要但隐藏的概念。New AggregationGroup帮助减少cuboid数量,提高维度组合的灵活性。文章介绍了AGG的数据结构,包括partialCubeFullMask、mandatoryColumnMask等,并提供了官方文档链接以供进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 重要但隐藏的概念

kylin的一些概念,文档中不会特别说明,但是如果你想了解Kylin的内部原理时,就必须需要理解。

1.1 什么是Base Cuboid

如一个需要通过kylin计算的hive表的维度为: [A, B, C], 那么[A,B,C]这个整体的维度组合, 就叫做Base cuboid.

1.2 什么是includes数组

一个Aggregation Group(之后简称AGG)是一个所有维度的子集, 这个子集就是一个includes数组,如全集为: 

1.3 什么是normal dimension

AGG的includes数组中的维度,会分别设置为各种Select Rules中的维度,那么什么Select Rules都没有参与的维度,就是normal dimension.

2 New AggregationGroup的概念

New AggregationGroup是Kylin在1.5提出的一个新概念, 其实主要就是将各个维度精简功能整合到一起,形成这个feature;

New AggregationGroup能做什么呢?一句话: 它能帮我们有效地,灵活地降维度.

若一个表中有数十个维度,但实际上基于维度组合的查询,只会用其中某几个维度,或者这些维度之前存在某种联系,那么可以通过组合维度的方式,减少生成的cuboid的数量。

New AggregationGroup由3种Select Rules组成, 其中Joint rules是1.5新引入的概念, 另外2种是之前版本就已经存在的.

3种Select Rules列举如下:

    Mandatory rule, Hierarchy rules, Joint rules;

本人的原则是, 不写别人讲过的东西。所以上面Select Rules的详细概念,这里不再说了,网上一堆一堆的。

3 AGG的数据结构

设某个Cube的维度为: [A, B, C]这3个维度(按照rowkey的排序), includes为: [A, B], joint为:[A, B];
AggregationGroup类:
  -> partialCubeFullMask为: 这个AGG的includes的mask: b0110
  -> mandatoryColumnMask: 强制维度的mask;
  -> hierarchyMasks: 是一个List<HierarchyMask>;
  ->HierarchyMask: 设为[A, B, C]
      fullMask: 0111 用数字7表示;
      allMasks: [b0100, b0110, b0111] //每个元素是一个long: [A, AB, ABC];
      dims: [b0100, b0010, b0001] //每个元素是一个long: [A, B, C]
  -> hierarchyDimsMask:
      把上面的list的所有元素的fullmask都包含进来,形成一个总的hierarchy的long值;
  -> joints: List<Long>
      每个元素都是单joint设置的所有维度的long值: [3, 6];
  -> jointDimsMask:
      所有joint维度的long表示: 6;
  -> normalDimsMask: long类型, 保留includes中, 非3种rule的维度:
      比如为6, 那么就是说A,B,C,D这4个元素, B和C是非3种rule出现的维度;
  -> normalDims: 
      [b0100, b0010, b0001]: normalDimsMask的数组表示;
  -> selectRule:
      拥有3种rule:每种是一个二维数组(除了强制维度mandatory_dims), 说明另外两个都可以有多个rules;
-> init()
      build出各种mask;

4 相关文档:

  AGG的官方介绍文档, 但不够"深入":

      http://kylin.apache.org/blog/2016/02/18/new-aggregation-group/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值