
听说,这里有最具价值的大数据案例、
大数据实践经验、大数据创新思维,
更有你想融入的大数据高端人脉圈!
据说,国内近6成大数据精英都在这!
随着维度数目的增加,Cuboid 的数量会爆炸式地增长。为了缓解 Cube 的构建压力,Apache Kylin 引入了一系列的高级设置,帮助用户筛选出真正需要的 Cuboid。这些高级设置包括聚合组(Aggregation Group)、联合维度(Joint Dimension)、层级维度(Hierachy Dimension)和必要维度(Mandatory Dimension)等。
本文将着重介绍聚合组的实现原理与应用场景实例。今后还会有相关系列技术文档发布,敬请期待。
作者 | 施继成 翟鹿渊 编辑 | Zoe
168大数据经授权发布,转载168大数据文章请注明原作者和本文来源,否则视为侵权。

众所周知,Apache Kylin 的主要工作就是为源数据构建 N 个维度的 Cube,实现聚合的预计算。理论上而言,构建 N 个维度的 Cube 会生成 2N 个 Cuboid, 如图 1 所示,构建一个 4 个维度(A,B,C, D)的 Cube,需要生成 16 个Cuboid。

(图1)
随着维度数目的增加 Cuboid 的数量会爆炸式地增长,不仅占用大量的存储空间还会延长 Cube 的构建时间。为了缓解 Cube 的构建压力,减少生成的 Cuboid 数目,Apache Kylin 引入了一系列的高级设置,帮助用户筛选出真正需要的 Cuboid。这些高级设置包括聚合组(Aggregation Group)、联合维度(Joint Dimension)、层级维度(Hierachy Dimension)和必要维度(Mandatory Dimension)等,本系列将深入讲解这些高级设置的含义及其适用的场景。
本文将着重介绍聚合组的实现原理与应用场景实例。
聚合组(Aggregation Group)
用户根据自己关注的维度组合,可以划分出自己关注的组合大类,这些大类在 Apache Kylin 里面被称为聚合组。例如图 1 中展示的 Cube,如果用户仅仅关注维度 AB 组合和维度 CD 组合,那么该 Cube 则可以被分化成两个聚合组,分别是聚合组 AB 和聚合组 CD。如图 2 所示,生成的 Cuboid 数目从 16 个缩减成了 8 个。

(图2)
用户关心的聚合组之间可能包含相同的维度,例如聚合组 ABC 和聚合组 BCD 都包含维度 B 和维度 C。这些聚合组之间会衍生出相同的 Cuboid,例如聚合组 ABC 会产生 Cuboid BC,聚合组 BCD 也会产生 Cuboid BC。这些 Cuboid不会被重复生成,一份 Cuboid 为这些聚合组所共有,如图 3 所示。

(图3)
有了聚合组用户就可以粗粒度地对 Cuboid 进行筛选,获取自己想要的维度组合。
应用实例
假设创建一个交易数据的 Cube,它包含了以下一些维度:顾客 ID buyer_id 交易日期 cal_dt、付款的方式 pay_type 和买家所在的城市 city。有时候,分析师需要通过分组聚合 city、cal_dt 和 pay_type 来获知不同消费方式在不同城市的应用情况;有时候,分析师需要通过聚合 city 、cal_dt 和 buyer_id,来查看顾客在不同城市的消费行为。在上述的实例中,推荐建立两个聚合组,包含的维度和方式如图 4 :

(图4)
聚合组 1: [cal_dt, city, pay_type]
聚合组 2: [cal_dt, city, buyer_id]
在不考虑其他干扰因素的情况下,这样的聚合组将节省不必要的 3 个 Cuboid: [pay_type, buyer_id]、[city, pay_type, buyer_id] 和 [cal_dt, pay_type, buyer_id] 等,节省了存储资源和构建的执行时间。
Case 1:
SELECT cal_dt, city, pay_type, count(*) FROM table GROUP BY cal_dt, city, pay_type 则将从 Cuboid [cal_dt, city, pay_type] 中获取数据。
Case2:
SELECT cal_dt, city, buy_id, count(*) FROM table GROUP BY cal_dt, city, buyer_id 则将从 Cuboid [cal_dt, city, buyer_id] 中获取数据。
Case3 如果有一条不常用的查询:
SELECT pay_type, buyer_id, count(*) FROM table GROUP BY pay_type, buyer_id 则没有现成的完全匹配的 Cuboid。
此时,Apache Kylin 会通过在线计算的方式,从现有的 Cuboid 中计算出最终结果。
小结
Apache Kylin 作为一种多维分析工具,其采用预计算的方法,利用空间换取时间,提高查询效率。本文介绍了 Apache Kylin 的高级设置中聚合组的部分,聚合组适用于当分析师粗粒度地关注某些维度去进行分组聚合的场景。之后的文章我们还将就 Apache Kylin 其他的高级设置的使用方法和使用场景做详细介绍,敬请期待。
【51举荐】专注大数据人才精准推荐
想求职,51举荐免费发求职信!
想招聘,51举荐帮你发悬赏令!

金三银四 大数据人才求贤季!
这里是国内最专业的大数据、商业智能、数据仓库人才招聘与交流社区。
1) 极速招聘:880元 (现价380元不含发票)
A 每家公司最多发布3个职位,超过3个岗位必须走专项招聘
B 3个微信朋友圈:投放四周,一周一次(精准推送,覆盖上万大数据从业人员)
C 168大数据社群:投放四周,一周一次
D 168大数据和51举荐公众号图文:图文第一条,推送一次,多家企业职位聚合
E 168大数据网站头条发布,保留企业联系方式
2) 专场招聘:(头条2000,二条1500,三条500)
(现价头条1680元,二条680元 不含发票)
A 单独一个图文,职位数不限,图片,内容自定义,独家!
B 3个微信朋友圈:投放四周,一周一次(精准推送,覆盖上万大数据从业人员)
C 168大数据社群:投放四周,一周一次
D 168大数据和51举荐公众号图文:(头条2000,二条1500,三条500)
E 168大数据网站头条发布,保留企业联系方式
3) 精准猎头服务:
收费详情请咨询微信:huiqiaodata
媒体合作、资源对接、大咖投稿请联系:link@bi168.cn
所有发布的招聘需求一律先支付后上架,请确认无误后再行付款。

免责声明:内容来自原创/投稿/公开渠道,纯属作者个人观点,仅供交流学习。转载稿件版权归原作者或机构所有,如有侵权,请联系删除。投稿、合作请联系:link@bi168.cn
168大数据
168大数据 www.bi168.cn 是国内更具影响力的数据科学社区媒体与产业服务平台,专注大数据、人工智能、商业智能、数据分析、云计算等数据科学领域的深度交流、知识分享、职场社交和职业发展,以大数据驱动创业创新和助力传统产业转型升级为使命,致力于为大数据产业的从业者、传统企业、厂商、服务商提供最具价值的资讯、服务、连接与产业研究。平台聚集了国内外近十万数据领域的大数据企业创始人、首席技术官、首席数据官、数据架构师、数据科学家、人工智能专家、商业智能专家等精英人物,共同致力于大数据技术、大数据价值、大数据思维的传播、交流与分享。





