工具演示
演示内容:
分析报表的制作
分析结果的操作(olap部分)
分析结果的图表联动
分析结果的渲染
分析报表可由维护人员或最终用户来制作,终极目标是由用户制作;
通过对设计结果的及时展现,让制作者跟系统进行交互式的设计,提供最终用户的参与度;
分析报表的制作需用户参与的部分有:
1. 横纵表头(分析纬度)的设计;
2. 需分析数据(度量)的选择,如指标金额,拨款金额;
例子:
| |
|
指标金额
|
拨款金额
|
未拨付情况
|
占总拨款%
|
| |
|
|
小计
|
基本支出
|
项目支出
|
未拨款金额
|
未拨%
|
|
|
机构
|
|
|
|
|
|
|
|
|
| |
功能科目
|
|
|
|
|
|
|
|
分析:
1:横表头包括指标金额和拨款金额两个数据,并且拨款金额是可通过经费类型再细化的,通过已知的数据计算未拨付情况和拨款的结构;
2:纵表头是由数据的一个或多个属性组合而成的,并且这个表头需要随时更换组合的要素,以便用户可从不同的角度去分析数据;这些属性是有层级的,分析时需要随时更换层级,以便用户能从宏观到微观的了解数据;
横表头的设计-录像: 横纬度设计.rar
纵表头的设计-录像: 纵纬度设计.rar
分析结果
1. 纬度钻取
2. 切片切块
3. 旋转-行列对称
4. 更换纵表头的组合元素
5. 从层级查看
6. 度量钻取
录像:结果操作.rar
图表联动
当用户需要更直观的图形展现时可用工具提供的图形分析功能,该功能提供的图形是和分析报表同步的。
具体请看录像:图表联动.rar
结果渲染
当分析报表的数据太多,用户想标识出含某些特征的数据时,可用渲染;如用户希望标识出大于某个值的拨款金额;
当用户想对某项分析结果进行风险预警时亦可用渲染,如对未拨款百分比大于50%的项目进行预警标识;
具体请看录像:结果渲染.rar
童式魔方 & MicroStrategy的智能立方体
在构思和实现童式魔方的过程中,我们都没有去了解过主流olap厂商的实现原理,这几天去集中搜查了一下这方面的资料,却惊讶的发现我们立方体模型的思路和原理竟和MicroStrategy的智能立方体是如此的相似,几乎同出一辙。这种立方体模型也有很好听的名字叫操作型立方体(operational cube),与之对应的叫分析型立方方体(analytical cube),区别在于操作型立方体的实时性更好。
OLAP一般分为MOLAP(Multi-Dimensional OLAP)和ROLAP(Relational OLAP)两种;
MOLAP产品比较出名的有Cognos的Powerplay、Hyperion 的Essbase和微软的Analysis Service,这些产品都是需要专业的数据仓库的;
ROLAP产品有MicroStrategy,它几乎是目前唯一一家还占据一定市场份额的ROLAP产品,ROLAP产品只需要普通的关系型数据库就可以了;
为什么需要智能立方体呢?看看MicroStrategy是怎么描述的:
为了实现立方体分析的功能,大多数的OLAP供应商使用定制的专用的立方体数据库。这种技术就是人们熟知的多维OLAP(或称MOLAP)。不幸的是,立方体数据库的数据容量非常小——连真正关系型数据库的容量的万分之一都不到,因为这种技术并不能支撑真正的关系型数据库的数据容量。尽管如此,由于大多数早期的部门级别BI应用只需要10MB到100MB的详细数据和汇总数据,因此人们在最初并没有意识到这种数据容量上的限制是一个问题。当公司发现需要部署上百个重叠的立方体来涵盖所有的数据子集的组合、汇总级别和跨应用的多用户组安全权限的需要时,立方体数据容量限制的问题就出现了。这些不断增长的立方体的堆积已经成为人们所熟知的“立方体农场(Cube farms)”。这种立方体农场给IT部门带来了极大的负担,他们不得不生成新的立方体,预先计算汇总数据,分发这些立方体给用户,并清除数据已经过时的立方体。
与此相比,MicroStrategy通过采用人们熟知的关系型OLAP(或称ROLAP)技术把关系型数据库建模成为“虚拟多维立方体(virtual multidimensional cube)”来实现OLAP功能。 MicroStrategy的用户拥有同样的分页、旋转、排序、过滤和钻取这些OLAP功能,不同的是它们可以在整个关系型数据库的范围内这样做。用ROLAP技术,用户所要分析的数据总能涵盖最新的数据——这就消除了“什么样的数据能够被分析到”这样的局限,并且用户和安全权限都是一致地依赖于关系型数据库的。早期的MicroStrategy用户就已经可以在整个数据库范围内而不仅仅在一个简单的数据子集上进行分析,唯一的代价是稍慢的响应时间,这就是为什么MicroStrategy要提出智能立方体(Intelligent Cube ?)解决这一问题的原因。
智能立方体的特性:MicroStrategy智能立方体提供和小型的MOLAP立方体所有同样的OLAP功能,同时拥有只在ROLAP的体系结构下才可以得到增强的可用性。
1.快速的报表分析和操作——立方体分析具有快速执行和增强的切片和切块能力
2.个性化和安全地共享立方体——通过个性化的视图,整个企业范围内的立方体都可以透明和安全地共享
3.自动地创建和同步立方体——在运行中创建立方体,并自动地刷新数据来满足实时分析的需要
4.从汇总数据向详细交易数据任意钻取——从立方体随意无缝钻取到整个数据仓库范围的能力
模型只是基本,还有更多的细节需要处理,以后还要多了解MicroStrategy,学习其更细微的功能和处理细节。
童式魔方虽然不是这种模型的第一个产品,但也算是原创吧。
ex.渲染定义
童式魔方现在支持对字体颜色、格的背景色的渲染,并支持html和excel两种格式,以后可继续加入字体的各种渲染,或者按行的渲染,多行多列的渲染等;
Ex:继续延用上面排名的例子,用户想突出看到项目支出分级排名的每级的前3名,并能通过字体颜色来区分前3名;
根据用户要求定制4个渲染,如下图:
图4.4.1
上图只展示了格渲染的定义和第一的字体定义,第二、第三与第一的定义雷同;
现在的渲染范围主要是通过设置值的最大和最小来确定,这里可以继续扩展;定义好渲染后勾上引用渲染标志,再展开可看到一下结果:
图4.4.2
从上图可见项目支出的分级排名已经清晰标识出前3名;
把渲染用于分析结果的预警也是个不错的方法,也就是在渲染过程中,收集达到预警条件的格,并形成预警信息展示出来,这个想法可以继续深化。
ex.分片排名
对于名次排列的分析要求一般的工具也会支持,童式魔方在此基础上还支持 分片排名、混合分片排名;
分片排名:如销售人员在各个地区的销售业绩排名,地区包括华南、华中、华东…,那么就按这些地区进行排名;
混合分片排名:在做了上面这种排名后,你还想进一步分析各个省份的排名情况,也就是既要按地区排名,也要按省份排名;
对于分片排名的分析要求一般的分析工具是比较难做到的,童式魔方的立方体模型对于处理这样的分析有着先天的优势;
以下将继续要财政的例子来演示童式魔方是怎么做到的,其实一般财政业务没有排名的要求,只是基于已有数据,方便演示而已;
Ex:用户想了解基本支出和项目支出(同属经费类型的子类)分别在资金来源和组织机构的指标情况,还想知道他们分别的排名是怎样的,其中机构要分开总体机构和各级机构的排名;根据上面例子的要求,行表头的设计结果如下图:
图4.3.1从上图可见,要取得基本支出和项目支出需要设置一个普通纬度,设置好级别即可;
而对于项目支出的总体和分级排名则需要设置两个自定义的纬度,他们的排名公式中有一个参数是设置其排名的级别范围的,需对应列设计纬度的级别;
列表头的设计就简单很多了,如下图:
图4.3.2置好上后按下分析按钮即可得到按web方式展现的结果,展开后的结果如下图:
图4.3.2从上图可见后两列显示了项目支出分别在总体与分级机构中的排名情况;
ex.自定义公式
对于一个复杂业务的数据分析并不是所有的数据都可以从事实表中直接获取的,而是需要通过特定的公式计算得到分析结果;一般的分析工具也会支持公式自定义,但有两个问题是没有得到很好的解决:
1. 如何让用户直接参与到公式自定义的工作,而不总是维护人员在根据用户的要求不断的修改;
2. 如何解决n次计算的问题,也就是某个公式所需要的参数本身也是通过公式计算而来的;
那么童式魔方是如何解决上面的两个问题的呢?
1. 童式魔方提供了自定义的设计纬度让用户可直接在其中编写公式,并可通过web展现的方式快速得到公式的计算结果;当然,用户需要接受一定的培训才能做出正确的公式定义,这是不可少,但这种方式已经很大程度上提高了用户的参与度;
2. 童式魔方通过自身优越的立方体模型可快速采集某公式所需参数,并通过智能的等待方法很好的解决了n次计算的问题;
以下将用一个分析报表的实现来自来看看童式魔方是如何解决上面两个问题;
该报表的列表头可以是任意的普通纬度组合(具体实现看ex 4.1),行表头如下图所示:
图4.2.1
表头的含意:
指标金额:一个度量,可从事实表获取;
拨款金额:也是一个度量,但这里可向下按经费类型钻取;
未拨付情况:包括未拨金额=指标金额-拨款金额、未拨%=未拨金额 / 指标金额 × 100;――这里未拨%就是一个2次计算,因为需要等待未拨金额的计算;
拨款金额占总拨金额的%:=各行的拨款金额 / 总拨款金额 × 100;――总拨金额也是在分析过程中产生的;
用分析纬度设计工具设计的结果如下图:
图4.2.2
设置好上图的3个带公式的自定义纬度后,按下分析按钮即可得到按web方式展现的结果,展开后的结果如下图:
图4.2.3
ex.组合树型纬度
业务背景
以财政业务数据为例,财政业务数据具有多样化的纬度和度量,以便财政人员对资金的管理和监察;
纬度:功能科目-树状、经济科目-树状、机构-树状、经费类型-树状、资金来源-树状、主管岗位-普通序列、拨款时间-日期型 等;
度量:指标金额、下达金额、已拨金额、使用金额、记账金额 等;
组合树型纬度
从上面的纬度来看,大部分是树状的纬度,且财政要求的分析纬度通常都是多个纬度的组合,一般的分析工具要解决这个问题通常会在数据抽取阶段组合出用户所需的纬度来供用户使用,但这样带来的主要问题有:无法适应用户日渐变化的需求 和 难于维护日渐增加的组合纬度。童式魔方通过让用户自由设计纬度并在分析时生成组合纬度很好的解决了上面的问题,那下面看看童式魔方是怎么组合树状纬度。设计界面:
图4.1
从上图可见,设计界面的右方是放着可提供给用户设计的纬度和度量,这些信息是由维护人员在cube定义阶段设置好的;界面的左方是用户设计后的结果,对于二维的数据分析提供了行设计纬度和列设计纬度。那么下来我们表4.1为例子来做一个分析报表;
|
|
|
|
主管岗位
|
|
经费类型
|
| |
|
|
|
资金来源
|
|
|
机构
|
|
|
|
|
|
| |
功能科目
|
|
|
|
|
| |
|
经济科目
|
|
|
|
表4.1
表4.1的列表头是由 机构 挂 功能科目 挂 经济科目 组合而成;行表头是由主管岗位 挂 资金来源 后,并 经费类型 组合而成。行列纬度可分别设计,互不干系;先设计列纬度,点击“列设计纬度”标签,再点击新增可见纬度设置界面,如下图:
图4.2
在纬度设置界面有四种纬度可使用,这里只需使用普通纬度,选择一个机构纬度,并输入这个树状纬度的开始级别和结束级别,点击确定后即可得到一个设计纬度;由于是在机构下挂功能科目,所以下一个设计纬度需设置成机构的子节点,先点击机构节点在点击新增按钮,即可再次打开纬度设置界面,下面的操作同上,那么最后得到的结果如下图:
图4.3
对于行设计纬度是由 主管岗位 挂 资金来源 后,并 经费类型 组合而成,与列有所不同,在第一级有两个同级的节点,但对于设计纬度必须有一个根节点,所以这里需手工加一个根节点,再把主管岗位和经费类型并在这个根节点之下。得到的结果如下图:
图4.4
在行列纬度都设计好后,即可点击分析按钮来查看最终格式和分析结果,行列表头均可展开后收回,并支持定向筛选;
列表头的结果如下图:
图4.5
行表头结果如下图:
图4.6
总体结果如下图:
图4.7
系统架构
1.1 系统构成
童式魔方的构成主要包括:数据仓库、ETL、元数据解析器、数据分析引擎、公式解析器、数据渲染引擎、缓存机制、知识库、报表展示器、图形展示器。
1.1.1 数据仓库
童式魔方可采用各种sql数据库来建立数据仓库,具体的选择需根据用户的实际情况,对于一般情况的需求最简单的方法就是采用mysql数据库。
1.1.2 ETL
ETL是数据采集、清洗的工具,负责从各类数据源中根据用户需要筛选出来的感兴趣的数据并创建成通用、可重复使用的多维数据立方体;ETL具有极高的存储效率和响应速度,一旦创建规则、建立存储,企业不同层级用户将基于立方体进行商业分析,完全与生成系统进行剥离,性能可靠性得到保障,保证用户访问数据的响应速度。
1.1.3 元数据解析器
元数据是系统中关于数据源、数据结构、业务模型等的描述,是整个分析系统的基础,童式魔方的设计、开发和使用都是基于元数据来进行的。系统采用了业界标准的立方体定义方法,并对其进行了部分的改进,如树型描述部分;系统提供了对这种定义方法的解析器,该解析器支持元数据的热加载,在系统启动时便可加载已定义的元数据,亦可在系统启动后检测到新的元数据定义并加载,随时准备提供给用户做分析设计。 输入:元数据定义文件;输出:元数据对象;元数据解析器具备以下特性:l 准确性:相同的元数据定义应该产生一致的解析结果。l 热加载:对新增的元数据定义的反应 应该是快速及时的。
1.1.4 数据分析引擎
数据分析引擎是整个系统的核心部分,主要负责:立方体的模拟、把设计纬度解析成分析纬度、把原生数据转换成立方体数据、纬度与度量的上卷与下钻、子立方的计算(与公式解析器的交互)、子立方的定位;输入:原生数据(数据仓库提供)、设计立方体(知识库提供);输出:计算后的模拟立方体对象;数据分析引擎还应该提供对自身工作的监控信息,监控信息应该包含模拟立方体对象生成的时间和数据容量等信息。――未完成数据分析引擎具备以下特性:l 准确性:相同的原生数据在相同的统计口径中应该产生一致的分析结果;l 高性能:对数据的处理应该是快速及时的;l 伸缩性:对数据的处理和分析是可配置的;l 智能型:可自识别所有的子立方是否计算完成,避免无限制的计算;
1.1.5 公式解析器
公式解析器用与配合数据分析引擎对自定义纬度的公式进行解析和计算,支持四则运算、分片排名、同期比、环比;公式的参数定义规则有两种:父子关系、轴坐标;输入:自定义公式、模拟立方体对象;输出:计算结果;公式解析器具备以下特性:l 准确性:相同的模拟立方体对象在相同的计算公式中应该产生一致的计算结果;l 高性能:对公式的解析、参数在模拟立方体的定位、结果的计算应该是快速及时的;l 易扩张:公式定义的需求是多变的,解析器需不断扩展自己的解析能力;
1.1.6 数据渲染引擎
数据渲染引擎负责对数据分析引擎提供的数据进行最后的格式化操作,包含数据的监控报警信息,用于提供给分析结果展示器;数据渲染引擎扮演一个油漆工的角色,只是对数据分析引擎分析完成的数据进行美化工作;输入:模拟立方体对象;输出:格式化数据; 渲染引擎应该具备以下特性:l 高性能:对数据的渲染应该是快速的;l 兼容性:渲染引擎输出应该兼容同类设备,例如Html应该兼容IE和FireFox;
1.1.7 缓存机制
缓存机制的产生主要是为了解决多用户的并发访问和相同立方体的访问,主要是向外提供已经被缓存了的数据;缓存机制缓存的数据可能是原生数据,也可能是数据分析引擎生成的模拟立方体对象或者数据渲染引擎生成的数据。输入:供存储的数据输出:无或者被缓存的数据缓存机制具备以下特性:l 高性能:对被缓存的数据的查找和返回应该是快速的;l 高并发:缓存机制能够舒缓多用户操作带来的并发压力问题,主要舒缓后端立方体数据的并发计算和原生数据的并发访问;l 自适应:能根据总体内存的大小和数据的使用频率来清理缓存,使自身能良好运作;
1.1.8 知识库
知识库用于存储用户定义的各种分析要求,包括立方体的定义和纬度定义,并提供简单易用的设计界面。知识库作为整个系统的核心配置存储应该具备以下特性:l 数据的稳健性:知识库中的数据因为涉及大量的报表配置信息,这些数据应该是稳定而且不易丢失的;l 查询性能:因为报表引擎频繁访问知识库中的数据,一般情况下,知识库的查询性能优于其写入性能;
1.1.9 报表展示器
报表展示器用于对分析结果的展现,结合数据渲染引擎可支持html、excel、pdf等多种格式的展现,html的展现可支持纬度的上卷、下钻、筛选、行列对换,亦可支持度量数据的钻取等操作。输入:数据渲染引擎渲染后的数据输出:报表报表展示器具备以下特性:l 高性能:报表展示器能把模拟的立方体数据快速转换成报表数据;l 直观性:报表呈现的数据要直观易懂,提供交互的地方要易操作。
1.1.10 图形展示器
图形展示器用于对分析结果的图形展现,可支持柱图、线图、区域图、饼图等多种形式的图形展现。输入:模拟立方体对象、图形展示参数输出:图形图形展示器具备以下特性:l 高性能:图形展示器能把模拟的立方体数据快速转换成图形数据;l 图表联动:图形展示器可根据用户对报表的操作结果生成相应的图形。
童式魔方的特点
童式魔方是基于商业智能的数据分析系统,拥有从数据采集、存储、分析、展现等一整套数据分析解决方案;该系统致力于解决分析纬度的自由组合,通过其灵活的纬度组合可以满足用户的各种分析需求。
1 标准定义
童式魔方采用了业界标准的立方体定义方法,可以很容易与其他符合标准的数据分析系统交互,也可以保护用户原有的资源和和未来再生产的资源。
2 立方体模拟
童式魔方采用了先进的对象技术来模拟实际的立方体,并内建父子式关联与轴坐标,通过此模型可快速准确的定位到任何一个子立方,从而实现子立方间的计算与钻取,该计算可以是规则计算,也可以是非规则计算。
童式魔方可以模拟简单的二维立方,亦可模拟三纬以上的多纬立方,且该立方体模型的纬度是对称的,从而可轻松实现立方体的旋转、切片等操作。
立方体是按照业务分析逻辑的Olap多维因素分析模型的设计创建,通过对多维数据立方体的Olap分析,用户可以创建高效的统计汇总报表有针对性的进行业务的趋势跟踪、指导业务运作。
3 树型纬度组合
对于复杂的业务数据,其分析纬度也是复杂的,其复杂性是由以下几个因素构成:
1.是由众多的纬度和度量组成的,例如财政的数据就包括:纬度-功能科目、经济科目、项目、经费类型、资金来源、组织机构、主管岗位、时间;度量-预算金额、指标金额,下达金额、拨款金额、未拨金额;
2.纬度很多是树型纬度,用户对树型纬度的要求更是多种多样,例如一个三级的树型纬度,用户就可能有7种需求;
3.用户可用已有的纬度做挂接或者并列的组合,从而衍生出更多的纬度;
4.用户可自定义纬度,自定义的纬度有各种复杂计算的需求,如公式计算、分片排名、同期比、环比;
童式魔方通过构造树型的分析纬度,并支持公式定义,很好的适应了以上各种复杂的情况;总结童式魔方分析纬度的特点包括:自由扩展、任意组合、支持树型、支持公式定义。
4 设计直观
如此多变化的纬度需求是很难穷举的,如果要开发人员来开发或者护人员来管理这么多分析报表,其工作量是不可想象的。
童式魔方通过简单的树型定义即可实现由用户自由操控设计纬度的组合,用户可以根据系统所提供的设计纬度进行分析报表的设计,无需专业知识,直接在系统提供的设计界面上进行,该界面可快速展现设计后的分析结果,直到结果为用户所需;用户亦可把通用的纬度设计保存下来,供下次调用,避免重复劳动;童式魔方分析设计界面大大加强了纬度定义的可操控性,提高了用户的参与度,从而避免了大量的分析报表的开发和维护工作。
5 任意筛选
童式魔方的每一项分析纬度都是可筛选的,并且分为代码级别与非代码级别,让用户任意进行数据的筛选和分割,直到结果为用户所需,极大的发挥了终端用户的主观分析意识。
6 图表联动
童式魔方提供各种直观的分析图,如柱图、线图、区域图、饼图等;并且图的展现可随分析报表的表化而变化,随时保持联动,保证了图标的一致性,给用户带来更直观的分析展现。
童式魔方的身世
童式魔方,名字是否显得怪怪的,其实是我家童童的玩具,小孩的玩具而已,呵呵,很简单。
为什么要做这样一个工具呢?开始只是兴趣而已,想自己模拟一个类似olap的数据分析引擎,后来在工作中却发现很多的报表系统或者开源的工具似乎都不能完全满足我们的业务需求,于是干脆把自己的研究工业化好了,于是就建立了一个小团队做了起来,已成雏形。