Kylin Cube构建优

一:使用衍生维度(derived dimension)

衍生维度用于在有效维度内将维度表上的非主键维度排除掉,并使用维度表的主键(其实是事实表上相应的外键)来替代它们。Kylin会在底层记录维度表主键与维度表其他维度之间的映射关系,以便在查询时能够动态地将维度表的主键“翻译”成这些非主键维度,并进行实时聚合。

虽然衍生维度具有非常大的吸引力,但这也并不是说所有维度表上的维度都得变成衍生维度,如果从维度表主键到某个维度表维度所需要的聚合工作量非常大,则不建议使用衍生维度。

二: 使用聚合组(Aggregation group)

聚合组(Aggregation Group)是一种强大的剪枝工具。聚合组假设一个Cube的所有维度均可以根据业务需求划分成若干组(当然也可以是一个组),由于同一个组内的维度更可能同时被同一个查询用到,因此会表现出更加紧密的内在关联。每个分组的维度集合均是Cube所有维度的一个子集,不同的分组各自拥有一套维度集合,它们可能与其他分组有相同的维度,也可能没有相同的维度。每个分组各自独立地根据自身的规则贡献出一批需要被物化的Cuboid,所有分组贡献的Cuboid的并集就成为了当前Cube中所有需要物化的Cuboid的集合。不同的分组有可能会贡献出相同的Cuboid,构建引擎会察觉到这点,并且保证每一个Cuboid无论在多少个分组中出现,它都只会被物化一次。
对于每个分组内部的维度,用户可以使用如下三种可选的方式定义,它们之间的关系,具体如下。
1)强制维度(Mandatory),如果一个维度被定义为强制维度,那么这个分组产生的所有Cuboid中每一个Cuboid都会包含该维度。每个分组中都可以有0个、1个或多个强制维度。如果根据这个分组的业务逻辑,则相关的查询一定会在过滤条件或分组条件中,因此可以在该分组中把该维度设置为强制维度。

2)层级维度(Hierarchy),每个层级包含两个或更多个维度。假设一个层级中包含D1,D2…Dn这n个维度,那么在该分组产生的任何Cuboid中, 这n个维度只会以(),(D1),(D1,D2)…(D1,D2…Dn)这n+1种形式中的一种出现。每个分组中可以有0个、1个或多个层级,不同的层级之间不应当有共享的维度。如果根据这个分组的业务逻辑,则多个维度直接存在层级关系,因此可以在该分组中把这些维度设置为层级维度。

3)联合维度(Joint),每个联合中包含两个或更多个维度,如果某些列形成一个联合,那么在该分组产生的任何Cuboid中,这些联合维度要么一起出现,要么都不出现。每个分组中可以有0个或多个联合,但是不同的联合之间不应当有共享的维度(否则它们可以合并成一个联合)。如果根据这个分组的业务逻辑,多个维度在查询中总是同时出现,则可以在该分组中把这些维度设置为联合维度。

Kylin Cube构建优化相关推荐

  1. 未名企鹅极客 | Kylin Cube构建优化(上)

    Kylin Cube构建优化 联机分析处理OLAP是一种软件技术,它使分析人员能够迅速.一致.交互地从各个方面观察信息,以达到 深入理解数据的目的. 多维数据组织OLAP的使用一般有两种背景条件: Ø ...

  2. 【电商数仓】数仓即席查询之Kylin Cube构建原理和构建优化

    文章目录 一 Kylin Cube构建原理 1 维度和度量 2 Cube和Cuboid 3 Cube构建算法 (1)逐层构建算法(layer) (2)快速构建算法(inmem) 4 Cube存储原理 ...

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

    kylin 聚合组优化 --------1.简单情况-------------- 1.强制优化 分步乘法,n个元素取m,结果m x n 2^(N-X) 2.层级优化 将N个维度中X个维度设置为层级维度 ...

  4. Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...

  5. Apache Kylin Cube 的构建过程

    不多说,直接上干货! 1. Cube的物理模型 Cube物理模型 如上图所示,一个常用的3维立方体,包含:时间.地点.产品.假如data cell 中存放的是产量,则我们可以根据时间.地点.产品来确定 ...

  6. shell调度kylin的cube构建任务

    shell调度kylin的cube调度任务 shell shell 1 #!/bin/bash2 3 echo "kylin_host_port:${1}"4 echo " ...

  7. Kylin实践(二)--Cube构建

    接上篇:Kylin实践(一)--Hadoop环境搭建 https://blog.csdn.net/isscici06/article/details/80624797 ---------------- ...

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

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

  9. kylin cube 增量和全量

    2019独角兽企业重金招聘Python工程师标准>>> 全量构建与增量构建 全量构建 对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取全 ...

最新文章

  1. 阮一峰在 GitHub 又一开源力作!
  2. redmine 配置
  3. TACACS +和RADIUS比较
  4. python用字典存储学生信息网_用Python存储字典的四种方法
  5. 为什么不应该用Stream forEach替换for循环的3个原因
  6. 服务器cpu_服务器CPU与GPU协同运算加速三巨头竞争
  7. fx5u mc协议_SLMP协议和MC协议
  8. 查询mysql数据库中所有表名
  9. SOP 中的 Service
  10. liunx 安装 confluent-kafka-go
  11. 血管穿刺机器人研究汇总
  12. Microsoft JScript提示‘DIRECT’未定义(2014-08-26记)
  13. 最新版idm下载器(Internet Download Manager)视频嗅探神器
  14. 简述线性反馈移位寄存器
  15. 智慧医院信息化建设(整体解决方案)
  16. 如何使用启动盘启动计算机,电脑重装系统怎么设置用U盘启动盘引导?
  17. E-R图、N-S图、PAD图、程序流程图
  18. 处女座与小姐姐(三)
  19. 在 Win7 下安装 KB4512506 补丁报告 0x80092004 错误的解决办法
  20. 高德地图 鼠标点击后 地图上点标记跟着变化

热门文章

  1. vb6实现union数据结构_Redis数据结构与对象编码解析
  2. shell基础(下) 特殊符号
  3. Redis(三)源source编译
  4. C++11统一初始化形式,使用{}
  5. 虚函数指针(vptr)与虚函数表(vptb)
  6. 一个数组去重的简单实现
  7. Objective-C(9)内存管理之ARC
  8. java if 局部变量_java – 为什么局部变量在if-else构造中启动而在if-else-if构造中不启动?...
  9. sql 获取一个周的周一和周日
  10. Oracle fgs(精细审计)使用