saiku、mondrian前奏之——立方体、维度、Schema的基本概念

以前介绍了几个基本工具: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的分析引擎,他可以执行MDX语句,可以分析数据模式的XML。

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

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

时间: 2024-11-03 10:34:50

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

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

前面的一篇文章——数据仓库的多维数据模型中已经简单介绍过多维模型的定义和结构,以及事实表(Fact Table)和维表(Dimension Table)的概念.多维数据模型作为一种新的逻辑模型赋予了数据新的组织和存储形式,而真正体现其在分析上的优势还需要基于模型的有效的操作和处理,也就是OLAP(On-line Analytical Processing,联机分析处理). 数据立方体 关于数据立方体(Data Cube),这里必须注意的是数据立方体只是多维模型的一个形象的说法.立方体其本身只有三

维度建模的基本概念及过程

摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识:其次,介绍设计维度模型的4个基本步骤:再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构.一致性维度.一致性事实. 关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实. 0 引言 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语.术语“维度”与“事实”,最初是20世纪60年代在一个由General Mil

大数据开发实战:维度建模1-相关概念

1.维度建模相关概念 1.1.度量和环境 维度建模支持对因为过程的支持,这是通过对业务过程度量进行建模来实现的. 那么,什么是度量呢?实际上,通过和业务方.需求方交谈.或者阅读报表.图表等,可以很容易地识别度量. 考虑如下因为需求: a.店铺上个月的销售额如何? b.店铺库存趋势如何? c.店铺的访问情况如何(pv page view 访问量, 即页面浏览量或点击量,衡量网站用户访问的网页数量:在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计. uv: Un

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

关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OLAP多维分析系统,第一种方案是针对业务,定制开发一个前端界面,将界面上用户的选择和操作,翻译成SQL,提交给Kylin查询.另一种方案则是将Kylin与BI工具整合起来,借助BI工具,对Kylin中的Cube进行查询分析.Kylin本身对于BI工具Tableau可以非常好的整合使用,我自己下载了Tableau

pentaho saiku 安装全过程

公司希望也开发一套多维分析系统,以解决运营/产品无休止的需求和技术人力不足的矛盾! 一.开发选型: 一.BIRT:易用性差,所以没再使用 二.JasperReport+ireport:文档收费,不支持ETL工具 三.Pentaho:在中国比较普及,文档多,报表是其中的一部分,比如数据同步和ETL也都有 四.Openi:老牌BI工具,以前淘宝等公司都使用过,可惜过时啦 结合公司实际,综合考虑决定使用Pentaho的saiku做为报表平台 二.搭建环境: 选型结束后,就开始准备,搭建环境! 方案一.

安装saiku笔记

公司希望也开发一套多维分析系统,以解决运营/产品无休止的需求和技术人力不足的矛盾! 开发选型: 一.BIRT:易用性差,所以没再使用 二.JasperReport+ireport:文档收费,不支持ETL工具 三.Pentaho:在中国比较普及,文档多,报表是其中的一部分,比如数据同步和ETL也都有 四.Openi:老牌BI工具,以前淘宝等公司都使用过,可惜过时啦 结合公司实际,综合考虑决定使用Pentaho的saiku做为报表平台 搭建环境: 选型结束后,就开始准备,搭建环境! 方案一.下载源代

Saiku国际化总结

国际化步骤: 1.在mondrian.properties同路径下加上locale_zh_CN.properties资源文件,内容例如:schema.name.K12UserAnalysis=K12用户分析(utf-8编码汉字) 2.mondrian.properties增加下面一行,通知mondrian处理类药读取locale_zh_CN的国际化文件 mondrian.rolap.localePropFile=locale_zh_CN 3.schema文件加上配置 <Schema name=&qu

Saiku简介

简介 Saiku成立于2008年,由Tom Barber和Paul Stoellberger研发.最初叫做Pentaho分析工具,起初是基于OLAP4J库用GWT包装的一个前端分析工具.经过多年的演化.重写之后,于2010年,改名为Saiku. OLAP分析 OLAP(On-Line Analytical Processing,联机分析处理)是一个使分析师.管理者和执行者从原始数据中用来快速.一致.交互访问的一种软件技术,从而真实的反映企业的数据情况.OLAP功能特点是动态多维分析整合企业数据.

saiku - 系统登录成功后查询Cubes

一.系统启动时初始化ds和conn 1.查询出目前系统拥有的Datasources和Connections放入内存中 2.比对saiku-datasources中的ds是否有新增的,如果有,创建新的ds 二.登陆授权成功后获取全部的Connections 1.查询OLAP数据连接(cubesConnectionList)列表 http://localhost:8080/saiku/rest/saiku/a1/discover OlapDiscoverResource - getConnectio