以前介绍了几个基本工具:saiku 和 Schema Workbench,算是入门级别的了解多维报表,如果要继续深入,需要深入了解如下几个概念:

1、OLAP

联机分析处理,和他对应的是OLTP(联机事务处理)。

OLTP:做为一个开发人员,OLTP是最常用的,甚至都不需要理解这个概念!比如各种门票销售系统、付款系统等等。这些系统对相应速度要求特别高

OLAP:主要用于分析和决策,是数据仓库的主要应用。比如:渠道A在2015-10-01给产品B带来多少pv、uv、订单、销售额等数据,这就对分析的能力提出了很高的要求。开发人员开到这里可能会想,这是一个Sql能解决的,有必要搞出一个概念吗?我理解是有两个原因,首先需求非常非常多,不可能每一个都写Sql,会累死的;其次从业务数据表里面写这个Sql,往往非常复杂,如果数据量很大,运行时间也会很长。

下面是OLAP和OLTP的主要区别:

 
OLTP
OLAP
用户
操作人员,低层管理人员
决策人员,高级管理人员
功能
日常操作处理
分析决策
DB设计
面向应用
面向主题
数据
当前的,最新的细节的,二维的分立的
历吏的,聚集的,多维的,集成的,统一的
存取
读/写数十条记录
读上百万条记录
工作单位
简单的事务
复杂的查询
DB大小
100MB-GB
100GB-TB

2、Mondrian

与其说Mondrian是OLAP的分析引擎,不如说就是(按照分析数据模式的XML)执行MDX语句,并输出结果。

为什么需要OLAP引擎Mondrian?在工作中经常需要对数据量极大的数据表和相关联的多个维度表进行查询、汇总、轴变换以及上卷、下钻等操作,查询可以非常复杂,如果没有 OLAP 引擎这是很难完成的。 想象一下,某个省份的uv是多少?某个省份某天的uv是多少?某个渠道给某个省份某天的uv是多少?某个渠道给某个省份某个城市某天的uv是多少?......要多少Sql

那么Mondrian可以将需求翻译成sql,并执行。要求:MDX语言,翻译规则:模式文件里面逻辑模型到物理模型的映射!

3、数据库表

其实这不算是新的概念,这里主要是说明一下数据库表和Mondian之间的关系。Mondrian使用JDBC链接数据库,并运行在数据库基础上。数据表分为:事实表和维度表,这些概念可以参考:http://www.cnblogs.com/liqiu/p/4243437.html

4、立方体

这是核心概念,事实表和维度表共同构成了立方体。如图所示:

这个立方体有三个维度时间(Time)、货运方式(Route)、地区(Source),数据(度量) 就位于各轴的交叉点(Cell)。

如果关心不同的维度和层次,就会得到不同的数据粒度,在立方体中就是一个面,或者一个柱形,或一个小立方体。这也叫数据立方体的一个切片(Slicer)。

关心维度越少,层次越高,数据量就越少,这是一个聚集(Aggregate)的过程,会对度量进行聚集操作(一般是汇总)。

5、维度

维度(Dimension)表示数据的属性,一个维度一般会有一个维表(也可能多个),事实表会有一个字段关联维表。

比如某个销售数据里可能会有客户这个维度,有一个 customers 表:包含客户名字、性别、地区等属性,在事实表会有一个字段叫 customer_id,关联 customers 表。

有的维度可以没有维度表,因为这种维度比较简单,没有更多属性,没有必要加一个维度表。这种维度叫退化维度。比如事实表里有一个支付方式字段,只有已确定的有限几种取值:比如 cash(现金)、credit(信用卡)等。又比如事实表里已有了一个性别字段,那性别这个维度就不需要一个维表。

5.1 维度的层次

维度是可以有层次的。比如前面的数据立方体,三个维度都有层次。货运方式分陆地和非陆地,陆地分公路和铁路、非陆地分海路和航空。分层次的维度提供了更多的数据粒度选择。

维度的层次(Hierarchy)包含多层/级(Level),在维表中一般每层会有一个字段,事实表关联的是最低一级维度。比如 Time 维度表,如下:

CREATE TABLE "Time"
(
stattime date, -- 日期
week integer, -- 周
month integer, -- 月
quarter integer, -- 季度
year integer -- 年
)

事实表关联的是维表的日期(yyyy-MM-dd)字段,而维表还有月、季度、年字段。有些事实表会增加月、季度、年(冗余)字段,为了 在查询时减少关联维表。

5.2 维度的成员

维度的成员(Member)指的维表某个级别(Level)的一个取值。以时间维度为例,假设时间维度分为年份、季度、月份、日期这样的级别,时间跨度是 2003 年至 2005 年(假设每一天都要数据),那么日期这一级别(最低的级别)的成员(Members)是维度表所有的日期(2003-1-1,2003-1-2...2005-12-31)(1 千多个成员),月份这一级别的成员是 1-12(12 个),季度的成员是 1-4(4 个),年份的成员是2003-2005(3 个)

6、聚集表

聚集表:是为了提升效率事先对事实表进行轻度的汇总。相当于预处理,不用每次都计算

7、Schema

多维数据的事实表、维表、聚集表等存储于数据库中,属于物理模型;而数据立方体、维度、度量这些概念属于逻辑模型。多维分析引擎必须要理解逻辑模型,并能够映射到物理模型上。多维数据的模式(Schema)就是用来描述这个逻辑模型以及到物理模型的映射的。 模式(Schema)是多维数据库的元数据。

比如咱们在使用saiku的时候,上传的shema文件。或者使用mondrian workpench的时候,自动生成的xml文件都是这个内容,下面是一个例子:

<Schema name="qiu-schema">
<Cube name="qiu-cube" visible="true" cache="true" enabled="true">
<Table name="sale" schema="public" alias="">
</Table>
<Dimension type="StandardDimension" visible="true" foreignKey="cusid" name="qiuDimension">
<Hierarchy name="qiuHierarchy" visible="true" hasAll="true" allMemberName="allCustomer" allMemberCaption="所有名称">
<Table name="customer" schema="public" alias="">
</Table>
<Level name="qiuLevel" visible="true" column="gender" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Measure name="qiuMeasure" column="num" datatype="Numeric" aggregator="sum" visible="true">
</Measure>
</Cube>
</Schema>

参考:

http://76287.blog.51cto.com/66287/885475

http://www.cnblogs.com/liqiu/p/4243437.html

saiku、mondrian前奏之——立方体、维度、Schema的基本概念的更多相关文章

  1. [mondrian] 分析一个简单的schema文件

    <?xml version="1.0" encoding="UTF-8"?> <Schema name="Mondrian" ...

  2. 数据立方体----维度与OLAP

    前面的一篇文章——数据仓库的多维数据模型中已经简单介绍过多维模型的定义和结构,以及事实表(Fact Table)和维表(Dimension Table)的概念.多维数据模型作为一种新的逻辑模型赋予了数 ...

  3. schema.xml属性概念

    # schema 定义逻辑库 checkSQLschema  当该值设置为 true 时,如果我们执行语句**select * from TESTDB.travelrecord;**则 MyCat 会 ...

  4. Saiku_学习_02_Schema Workbench 开发mdx和模式文件

    一.前言 saiku的查询都是通过cube来进行的.因此每当我们要进行一次多维度查询时,都要先修改xml.上传.重启才能生效,不仅效率低,还不利于学习和理解MDX和模式文件. 通过 workbench ...

  5. saiku之固定维度(必选维度)

    工作中遇到的问题,记录下来方便以后查找. 在saiku中如何设定固定维度? 找到WorkspaceDropZone.js文件,在synchronize_query: function(){}方法中的“ ...

  6. 【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台

    关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OL ...

  7. pentaho saiku 安装全过程

    公司希望也开发一套多维分析系统,以解决运营/产品无休止的需求和技术人力不足的矛盾! 一.开发选型: 一.BIRT:易用性差,所以没再使用 二.JasperReport+ireport:文档收费,不支持 ...

  8. Saiku OLAP

    简介 Saiku成立于2008年,由Tom Barber和Paul Stoellberger研发.最初叫做Pentaho分析工具,起初是基于OLAP4J库用GWT包装的一个前端分析工具.经过多年的演化 ...

  9. Saiku国际化总结

    国际化步骤: 1.在mondrian.properties同路径下加上locale_zh_CN.properties资源文件,内容例如:schema.name.K12UserAnalysis=K12用 ...

随机推荐

  1. 64位Linux安装32位向日葵

    查看linux系统版本信息如下,可以看出系统为64位. [root@localhost bin]# uname -aLinux localhost.localdomain 3.10.0-327.3.1 ...

  2. PHP读取大文件的几种方法介绍

    读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办 ...

  3. Smarty3学习笔记

    Smarty3 笔记 By 飞鸿影~ -- :: Smarty入门 1.什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离, 使php程序员只 ...

  4. paip.提升性能---mysql 性能 测试以及 参数调整.txt

    paip.提升性能---mysql 性能 测试以及 参数调整.txt 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://b ...

  5. atitit.导航的实现最佳实践and声明式编程

    atitit.导航的实现最佳实践and声明式编程 1. 顶部水平栏导航 1 2. 竖直/侧边栏导航 1 3. 选项卡导航 1 4. 面包屑导航 1 5. 标签导航 1 6. 搜索导航 2 7. 分面/ ...

  6. paip.spring3 mvc servlet的配置以及使用最佳实践

    paip.spring3 mvc servlet的配置以及使用最佳实践 1. Web.xml 1 2. springMVC.xml 2 1. mvcAction .mvcAction 2 2. Res ...

  7. css核心基础总结篇

    今日这篇是整合前面的css补充知识的. 我觉得前面的关于css的知识补充进去有点乱,今日整理整理一下. 层叠样式表 层叠是什么意思?为什么这个词如此重要,以至于要出现在它的名称里. 层叠可以简单地理解 ...

  8. MAT(Memory Analyzer Tool)工具入门介绍(转)

    1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...

  9. Cocos2dx.3x入门三部曲-Hello Game项目创建(二)

    一.前提: 完成cocos2d-x-3.x开发环境的安装配置. 具体参考:Cocos2d-x.3x_软件配置篇 二.本篇目标: l  创建一个名为hello game的cocos2dx 3.3的项目 ...

  10. mysql查看被锁住的表,正在进行的进程,已经杀掉进程的方法

    mysql查看被锁的进程 //查看所有进程show processlist; //查询是否锁表show OPEN TABLES where In_use > 0; //查看被锁住的 SELECT ...