首页 / 新闻

06.

23

2017

OLAP Cube可视化设计工具—Transwarp Rubik

技术博客

Transwarp Rubik是一款用于设计OLAP Cube的可视化工具,本文将具体介绍如何利用它进行OLAP Cube设计与实例化。

为了保证读者都清楚OLAP Cube的概念,我们在开始介绍工具的使用方式之前,先来看看什么是OLAP Cube。

 

OLAP Cube介绍


OLAP(联机分析处理)是一种多维分析技术,帮助业务人员快速、交互的从多方面了解并观察数据,从而深度掌握其中的信息。

OLAP采用了多维视图Cube的概念去描述一个数据集的结构。数据集中字段按照对于决策所起的作用被分为维度和度量两类:维度是描述事实记录的特征属性,相当于立方体中的坐标轴,例如时间、位置,度量是对事实记录反映出的数据,数值字段的统称,相当于在坐标中的位置,例如销售额、产量、人口。

OLAP从维度变换出发,提供钻取、切片切块、旋转等操作。钻取是对维度不同粒度不同层次(高层次到低层次,低层次到高层次)的分析;切片切块是选取特定的维度,在限定的维度中执行分析;旋转是对维度方向的变换。决策人员可以通过这些操作,从原始数据中提炼出的反映企业运作情况的直观易懂的数据,从而对决策提供支持。

 

TDH如何加速OLAP


Hadoop等大数据技术的发展使得大数据平台的计算能力以及容量都得到相当可观的提升,许多平台都可以有效应对TB甚至PB级的分析需求。随着数据量的飞速增长,大数据集多维实时分析的延长响应时间被延长,需要提供有效的方案去缩短延时。

TDH提供的解决手段是支持用户通过预先设计并实例化OLAP Cube,为业务提前进行聚合运算,使之后执行OLAP业务时能够直接利用预计算的结果,从而提速多维实时分析。也就是采用了用空间换取时间的策略。Tranwarp Data Hub(TDH) 5.0提供了Transwarp Rubik来实现OLAP Cube的设计以及实例化。

 

设计Cube时涉及的术语


维度的模型类型

1.星型模型:是一种表达维度表和事实表之间单层关系的模型。事实表和每个维度表之间都是直连关系,维度表之间没有直接关联。

例如有两张维度表dim1,dim2以及一张事实表fact,fact和维度表之间是分别通过fact.a=dim1.a和fact.b=dim2.b关联的,那么左右两边的维度结构都是星型模型。 

2.雪花模型:是一种用于表达多层关系的模型。雪花模型中维度表之间可以具有直接的关联关系,事实表和每个维度表是通过直接或者间接的关系维系在一起的,延伸出更深的层次关系。例如现在除了dim1,dim2和fact之外,还有一张维度表dim3,在上图的结构上,增加了dim2和dim3经由字段c的关联,如下图所示,那么图中左边的维度模型是星型,右边的即为雪花模型。

层次和级别

1.层次(Hierarchy):是对某类逻辑对象的描述,由级别组成。

2.级别(Level):是构成层次的元素,具有各种属性。

例如,假设将日历年视为一个层次,那么年、月、日就是级别,其中这三个级别可以有各种属性,以“年”为例,它可以有id和名称以及描述属性。

创建层次和级别的目的是减少没有业务需求的字段间的聚合,从而减少存储聚合结果的空间。

例如业务中,年、月、日组合作为GROUP BY key时,每次出现都满足低级别的维度条件一定会带上高级别的维度条件,比如2017年5月等等,而不会出现2017年3日这样的组合。那么我们就可以将年、月、日三个级别组合为层次,然后在Cube实例化过程中对年、月、日组合的层次进行聚合。那么在执行任务时系统就可以直接利用此Cube实例化也就是预计算的结果用于计算。

当A、B、C三个字段对应三个不同维度时,预先聚合会生成2^3共8种Group组合。而A、B、C设置为同一维度层次下的级别(Level)时,若级别顺序为A、B、C,则物化视图中可能的聚合结果只有{}、{A}、{A,B}、{A,B,C}。特别是维度较多时,合理的设置层级维度将会大大减少不必要的空间。当然,这样做的弊端显而易见,即需要Group By {A,C} | {B}等情况时,将不能通过此物化视图来进行加速查询。

所以实际业务场景中,需要业务人员根据具体业务需求判断并合理创建层次和级别。

 

Transwarp Rubik提供的功能


Transwarp Rubik除了可以实现Cube设计,以及实例化,还提供对Cube的管理功能,以及通知模块方便团队协作。其主要功能列举如下。

1.设计维度

首先选择参与维度设计的数据表;选择维度的模型类型,有星型模型和雪花模型两种选项;级别设置,设置从属于它的属性;维度设计,选择从属于它的级别。

2.设计数据立方体(Cube)

新建数据立方体项目;然后选择关联的事实表,并选择度量字段;最后用拖拽的方式选择被关联的维度表,设置维度和事实表之间的连接关系。

3.物化Cube

对所设计的Cube进行实例化。在设置实例化的过程中,我们可以选择对哪个度量执行哪种聚合运算,以及实例化时对哪些层次进行聚合;Rubik支持选择存储物化Cube的数据库以及存储方式;最后还可以选择实例化频率(只进行一次,还是每天|周|月一次)。

4.Cube的生命周期管理

从开始设计Cube,中间实例化,到最终销毁,全程提供管理服务和功能支持。

5.任务监控

监控实例化任务的运行状态。

6.团队合作

用户可以通过Rubik的仪表盘了解Cube的整体情况和统计信息,利用消息通知功能共享Cube的最新操作动态。

 

Transwarp Rubik Demo演示


下面是一个Rubik的操作demo视频,该视频演示了设计并实例化数据立方体(Part Supplier Cube)的全过程。

Part Supplier Cube涉及一张事实表partsupp(以supplycost为度量),两个维度part和supplier,part是仅涉及维度表part的星型维度,supplier是关联了维度表supplier、nation以及region的雪花型维度。我们还在part中设计了包含Part级别的Part层次,以及在supplier中设计了包含Region级别的Supplier Region层次。随后对该数据立方体进行了示例化设置。

这是最终设计完成时,Part Supplier Cube的结构。

 

总结


Rubik实现的是Cube的设计以及管理提供了强大的功能支持,但是真正业务中实现语句优化,还需要配合MBO使用。MBO是一种优化手段,可以根据对已有的物化Cube实例和物化视图进行判断,选择合适预计算结果,直接用于当前业务或者语句的执行。

Rubik只是一种简化Cube管理的工具,实际在使用时,用户需要对业务有敏锐且正确的判断分析能力,知道如何设计级别层次,如何构建维度和Cube,能最有效的达到优化目的,使效益和功能最大化。

对此篇文章如有任何问题,欢迎以邮件形式联系我们:bigdataopenlab@transwarp.io