众所周知,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)、层级维度(Hierarchy Dimension)和必要维度(Mandatory Dimension)等。

本文将着重介绍层级维度(Hierarchy Dimension)的实现原理与适用的场景实例。

层级维度

用户选择的维度中常常会出现具有层级关系的维度。例如对于国家(country)、省份(province)和城市(city)这三个维度,从上而下来说国家/省份/城市之间分别是一对多的关系。也就是说,用户对于这三个维度的查询可以归类为以下三类:

  1. group by country

  2. group by country, province(等同于group by province)

  3. group by country, province, city(等同于 group by country, city 或者group by city)

以图 2 所示的 Cube 为例,假设维度 A 代表国家,维度 B 代表省份,维度 C 代表城市,那么ABC 三个维度可以被设置为层级维度,生成的Cube 如图 2 所示。


(图2)

例如,Cuboid [A,C,D]=Cuboid[A, B, C, D],Cuboid[B, D]=Cuboid[A, B, D],因而 Cuboid[A, C, D] 和 Cuboid[B, D] 就不必重复存储。

图 3 展示了 Kylin 按照前文的方法将冗余的Cuboid 剪枝从而形成图 2 的 Cube 结构,Cuboid 数目从 16 减小到 8。


(图3)

应用实例

假设一个交易数据的 Cube,它具有很多普通的维度,像是交易的城市 city,交易的省 province,交易的国家 country, 和支付类型 pay_type等。分析师可以通过按照交易城市、交易省份、交易国家和支付类型来聚合,获取不同层级的地理位置消费者的支付偏好。在上述的实例中,建议在已有的聚合组中建立一组层级维度(国家country/省province/城市city),包含的维度和组合方式如图 4:


(图4)

聚合组:[country, province, city,pay_type]

层级维度: [country, province, city]

Case 1 当分析师想从城市维度获取消费偏好时:

SELECT city, pay_type, count(*) FROM table GROUP BY city, pay_type 则它将从 Cuboid [country, province, city, pay_type] 中获取数据。

Case 2 当分析师想从省级维度获取消费偏好时:

SELECT province, pay_type, count(*) FROM table GROUP BY province, pay_type则它将从Cuboid [country, province, pay_type] 中获取数据。

Case 3 当分析师想从国家维度获取消费偏好时:

SELECT country, pay_type, count(*) FROM table GROUP BY country, pay_type则它将从Cuboid [country, pay_type] 中获取数据。

Case 4 如果分析师想获取不同粒度地理维度的聚合结果时:

无一例外都可以由图 3 中的 cuboid 提供数据 。

例如,SELECT country, city, count(*) FROM table GROUP BY country, city 则它将从 Cuboid [country, province, city] 中获取数据。

转载于:https://blog.51cto.com/xiaolanlan/2068975

【技术帖】Apache Kylin 高级设置:层级维度(Hierarchy Dimension)原理相关推荐

  1. 【读书笔记】数据仓库- Apache Kylin权威指南

    Apache Kylin权威指南(第2版) ◆ 1.2.1 为什么要使用Apache Kylin 它们的主要技术是"大规模并行处理"(Massively Parallel Proc ...

  2. Apache Kylin新手入门指南

    Apache Kylin新手入门指南 文章目录 Apache Kylin新手入门指南 1 Apache Kylin是什么 2 为什么使用Apache Kylin 3 Apache Kylin的易用性如 ...

  3. 一文读懂Apache Kylin(麒麟)

    "麒麟出没,必有祥瑞." -- 中国古谚语 Kylin思维导图 前言 随着移动互联网.物联网等技术的发展,近些年人类所积累的数据正在呈爆炸式的增长,大数据时代已经来临.但是海量数据 ...

  4. 一文读懂Apache Kylin

    感谢分享. http://www.jianshu.com/p/abd5e90ab051?utm_campaign=maleskine&utm_content=note&utm_medi ...

  5. Apache Kylin

    "麒麟出没,必有祥瑞." -- 中国古谚语 Kylin思维导图 前言 随着移动互联网.物联网等技术的发展,近些年人类所积累的数据正在呈爆炸式的增长,大数据时代已经来临.但是海量数据 ...

  6. Apache Kylin | 麒麟出没,必有祥瑞

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! ...

  7. 易乐游无盘服务器网卡设置,技术帖 | 易乐游客户机网卡PNP设置

    原标题:技术帖 | 易乐游客户机网卡PNP设置 关注易乐游(微信/头条/搜狐/一点),了解网吧行业最新动态. 该功能适用于无盘网吧,开启网卡PNP功能后,可以在网吧服务器上更新客户机网卡驱动和修改客户 ...

  8. 一篇文章搞懂 Apache Kylin 4.x 的技术架构

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见1000个问题搞定大数据技 ...

  9. Apache Kylin从入门到精通

    Kylin 文章目录 Kylin 一.概述 1.1 Kylin定义 1.2 Kylin架构 1.3 Kylin特点 1.4 Apache Kylin4 概述 为什么选择 Parquet 替换 HBas ...

  10. 深入 Apache Kylin Cube 与查询优化

    2019独角兽企业重金招聘Python工程师标准>>> 近几年,Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起.它充分发挥Hadoop.Spark.HBa ...

最新文章

  1. Cisco ××× 完全配置指南-连载-IPSec
  2. 用flood测试web服务器响应时间,用Flood测试Web服务器响应时间(1)
  3. 面向对象精要-理解对象
  4. 动态规划-重叠区间2020.3.30
  5. 网络爬虫--18.python中的GIL(全局解释器锁)、多线程、多进程、并发、并行
  6. (16)FPGA面试题MOORE 与 MEELEY状态机
  7. kettle优化抽取数据速度_基于kettle工具提高表输出写入速度(每秒万条记录)
  8. web 端 gantt组件选型
  9. 修改ranger ui的admin用户登录密码踩坑小记
  10. Makefile之eval与call用法
  11. 【SICP练习】142 练习3.77
  12. 英特尔® 实感™ SDK 架构
  13. LPC1788启动代码分析
  14. WebView复制粘贴文本
  15. 物联网——WIFI热点配网
  16. [leetcode] 179 Largest Number
  17. <机器学习>支持向量机(SVM)理论
  18. c语言程序设计形成性作业3,C语言程序设计形成性作业3-4..doc
  19. 什么是程序?如何构成?
  20. 《ZigBee开发笔记》第五部分 外设篇 - 基础实验 第5章 CC2530继电器模块

热门文章

  1. 每周送新书:Python数据分析、SSM框架、Redis深度历险
  2. Angular 2:Web技术发展的必然选择
  3. PyTorch:数据读取2 - Dataloader
  4. Tensorflow:常见错误
  5. 深度学习:卷积神经网络CNN变体
  6. PGM:贝叶斯网的参数估计2
  7. Django项目实践2 - Django模板语言(常用语法规则)
  8. C语言中的system函数参数详解
  9. 利用dlib库(Python)实现实时(摄像头)人脸检测以及特征点标定(landmark))
  10. python中random is not defined_Python random库使用方法及异常处理方案