【转】Kylin的Hierarchies,Derived维度方面配置优化

http://blog.csdn.net/jiangshouzhuang/article/details/51286150

Hierarchies:

理论上对于N维度,我们可以进行2的N次方的维度组合。然而对于一些维度的组合来说,有时是没有必要的。例如,如果我们有三个维度:continent, country, city,在hierarchies中,最大的维度排在最前面。当使用下钻分析时,我们仅仅需要下面的三个维度的组合:
group by continent
group by continent, country
group by continent, country, city

在这个例子中,维度的组合从2的3次方共8种减少到了3种,这是一个很好的优化,同样适合YEAR,QUATER,MONTH,DATE等场景。

如果我们设置hierarchy作为H1,H2,H3,那么典型的场景应该是:
A. Hierarchies on lookup table
Fact table                                (joins)Lookup Table

column1,column2,,,,,, FK      PK,,H1,H2,H3,,,,

B. Hierarchies on fact table
Fact table
column1,column2,,,H1,H2,H3,,,,,,,

对于scenario A,这是一个特殊的案例,PK在lookup的表上,意外的成为了hierarchies的一部分。例如我们有一个日历的lookup表,cal_dt是PK(primary key):
A*. Hierarchies on lookup table over its primary key
Lookup Table(Calendar)
cal_dt(PK), week_beg_dt, month_beg_dt, quarter_beg_dt,,,

对于A*这种案例,你应该使用“Derived Columns”这种优化方案。

 

Derived Columns:
当一个或多个维度(必须是lookup表的维度,这些字段被称为“Derived”)能够从另一个中减少(通常是相关的FK,被称为“host column”),Derived column就可以被使用。
例如,假如我们有一个lookup的表,我们使用join关联fact表,并且使用“where DimA=DimX”。在Kylin中需要注意,如果你选择FK为一个维度,那么相关的PK将自动可查询的,没有任何额外的开销。这重要的原因是FK和PK总是相同的,Kylin能够首先在FK上使用filters/groupby,并且使用PK透明地替换。这个表明如果我们想用DimA(FK),DimX(PK),DimB,DimC在我们的Cube中,我们能够安全地仅仅选择DimA,DimB,DimC。
Fact table                             (joins)Lookup Table

column1,column2,,,,,,          DimA(FK)DimX(PK),,DimB, DimC

这里的维度DimA(维度代表FK/PK)有一个特殊的映射到DimB。
dimA dimB dimC
1 a ?
2 b ?
3 c ?
4 a ?
在这里案例中,给定一个DimA的值,DimB的值就确定了,因此我们说DimB能够从DimA获得(Derived)。当我们build一个cube包含DimA和DimB,我们能够简单的包含DimA,并且标记DimB作为Derived。Derived column(DimB)不会参与cuboids的生成:
original combinations: --原始维度组合

ABC,AB,AC,BC,A,B,C

combinations when driving B from A: --使用Derived优化后的维度组合

AC,A,C

在运行时,例如“select count(*) from fact_table inner join looup1 group by looup1 .dimB”的案例中,它期待从包含DimB的cuboid中去获取查询结果。然而,DimB因为使用了Derived优化,在cuboids没有结果。在这种情况下,我们修改执行计划,首先按照DimA(its host column)进行group by操作,我们将获取中间的结果,比如:
DimA count(*)
1 1
2 1
3 1
4 1
然后,Kylin将使用DimB的值替换DimA的值(因为他们的值都在lookup表中,Kylin能够加载整个lookup表到内存中并且build一个他们的映射关系),因而中间的结果为:
DimB count(*)
a 1
b 1
c 1
a 1
紧接着,运行SQL的引擎(calcite)将进一步的聚合中间结果为最终结果:
DimB count(*)
a 2
b 1
c 1
这个步骤发生在SQL查询运行期间,也就是“at the cost of extra runtime aggregation”。

时间: 2024-10-10 09:03:12

【转】Kylin的Hierarchies,Derived维度方面配置优化的相关文章

Kafka server部署配置优化

Kafka配置优化其实都是修改server.properties文件中参数值 1.网络和io操作线程配置优化 # broker处理消息的最大线程数        num.network.threads=xxx    #  broker处理磁盘IO的线程数        num.io.threads=xxx 建议配置: 一般num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1. num.io.threads主要进行磁盘io操作,高峰

Tomcat配置优化

TOMCAT配置优化一. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题1.准备jar包:log4j-1.2.16.jar , tomcat-juli.jar, tomcat-juli-adapters.jar 注意:tomcat-juli.jar, tomcat-juli-adapters.jar 需要根据不同tomcat的版本去相应下载(从http://archive.apache.org/dist/to

nginx 配置优化的几个参数

nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究了一下 总结总结Sleep nginx配置文件里面需要注意的一些参数 worker_processes 8 nginx要开启的进程数 一般等于cpu的总核数 其实一般情况下开4个或8个就可 我开2个 以了 多了没有太多用 每个nginx进程消耗的内存10兆的模样 worker_cpu_affinit

apache配置优化

最近参加了很多面试,多多少少有点小感悟,可以说观念转变了不少,特别是对于作为一个开发人员的定位,原来只是认为开发人员就只需要写好代码就行了,所以只需要有数据结构,算法,设计模式,重构方面的知识就行了.但是经过多次的面试,认识到网站的维护和优化也是开发人员的一个必要的素质.几乎所有的面试官都会问到一个问题,那就是如何优化一个网站,这个问题涉及到很多方面,其实面试官就是想考察你对常见的服务器,数据库的知识是否熟悉. apache的配置优化可以从以下几个方面来考虑: 一 . 内存 要让服务器运行的足够

Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化

Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化  大 | 中 | 小  [ 2008-10-28 16:55 | by 张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2008.10.28 转载请注明原文链接:http://blog.zyan.cc/post/375/] VPS(全称Virtual Private Server)是利用最新虚拟化技术在一台物理服务器上创建多个相互隔离的虚拟私有主机.它们以最

Eclipse 环境安装和配置优化

1.下载相应的eclipse版本.    官方下载地址:http://www.eclipse.org/downloads/    juno版本的64位下载地址:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-jee-juno-SR2-win32-x86_64.zip 2.解压eclipse-jee-juno-SR2-win32-x86_64.

转载mysql数据库配置优化

网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的"状态"进行优化. mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> show variables; 一.慢查询  mysql> show var

Linux之tomcat 安装&配置&优化

Tomcat简介: 1.Tomcat就是用来解析jsp程序的一个软件 .(jsp是一种编程语言,即JAVA) 2.Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由   Apache.Sun和其他一些公司及个人共同开发而成. 3.Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开   发和调试JSP程序的首选. Tomcat的安装分为两个步骤:安装JDK和安装Tomca

【未完】mariadb数据库配置优化

参考文档: 1.不重启MariaDB数据库服务器来重新配置 http://www.51ou.com/browse/MariaDB/51022.html 2.Linux Mariadb/MySQL的配置优化 http://www.xker.com/page/e2014/0708/132794.html 3.15 个有用的 MySQL/MariaDB 性能调整和优化技巧 http://www.tuicool.com/articles/a6jeiu 4.常用的三种修改mysql最大连接数的方法 htt