`
mengqingyu
  • 浏览: 333844 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

OLAP详解

    博客分类:
  • BI
阅读更多
最近项目需要开始研究OLAP于是做了如下总结:
BI的基本概念:
http://mengqingyu.iteye.com/blog/906526http://mengqingyu.iteye.com/blog/906464

数据仓库DM:
    业务系统—>ETL(DTS)—>原始数据库—>事实数据库—>OLAP—>前端报表。
    业务系统就是用户的Oracle数据库了,里面有一些业务数据(当然自己的系统数据字典还是有的),此外还有一些二进制话单文件。
    ETL过程就是一堆存储过程(维度的抽取、原始数据的抽取、事实数据的日结),然后通过DTS任务包调度起来。
    原始数据库就应该是ODS数据库了,负责把数据原封不动的从业务系统抽取过来(部分也经过转化和清洗);出于对SQLServer2000性能的考虑,将每个业务数据表都分成历史表和当前表,当前表根据数据量的情况决定保留数据周期并定时转移到历史表中。
    事实数据库保存着聚合信息的数据,完成KPI指标的计算,以及维度的抽取工作;同时在进行聚合的同时完成数据清洗工作。其实清洗很简单的,就是对NULL的处理,连对主外键的判断都没有,也许是业务系统的数据质量还算不错吧,维度的处理仅作更新和插入处理,来保证外键数据的匹配。不过 SQLServer2000的性能实在不敢恭维,大于1000万的数据表处理的勉勉强强的,只好建了许多了分区表(实际上就是每个月一张数据表,用视图Union起来,这也是微软推荐的方式)。
参考:http://www.ibm.com/developerworks/cn/rational/r-warehouses/
工具:http://mengqingyu.iteye.com/blog/906533

OLAP联机分析处理:
    OLAP应用是目前数据仓库上的重要应用之一,是决策分析的关键。作为数据仓库最重要的多维分析工具,OLAP利用存储在数据仓库中的数据完成各种分析操作,并以直观易懂的形式将分析结果返回给决策人员。它的目标是满足决策支持或多维环境特定的查询和报表需求,技术核心是多维分析。OLAP具有灵活的分析功能、直观的数据操作和分析结果可视化表示等突出优点,从而使用户对大量复杂数据的分析变得轻松而高效,以利于迅速做出正确的判断,辅助决策。
    相比于传统的OLTP(联机事务处理),OLAP定义了多维模型的概念辅助分析操作:这是由三个维度构成的一个OLAP立方体,立方体中包含了满足条件的cell(子立方)值,这些cell里面包含了要分析的数据,称之为度量值。显而易见,一组三维坐标就唯一确定了一个子立方。
    下面介绍一下多位模型的基本概念:
  立方体:由维度构建出来的多维空间,包含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行。
  维度:就是观察数据的一种角度。在这个例子中,路线,源,时间都是维度,
  这三个维度构成了一个立方体空间。维度可以理解为立方体的一个轴。要注意的是有一个特殊的维度,即度量值维度。
  维度成员:构成维度的基本单位。对于时间维,它的成员分别是:第一季度、第二季度、第三季度、第四季度。
  层次:维度的层次结构,要注意的是存在两种层次:自然层次和用户自定义层次。对于时间维而言,(年、月、日)是它的一个层次,(年、季度、月)是它的另一个层次,一个维可以有多个层次,层次可以理解为单位数据聚合的一种路径。
  级别:级别组成层次。对于时间维的一个层次(年、月、日)而言,年是一个级别,月是一个级别,日是一个级别,显然这些级别是有父子关系的。
  度量值:要分析展示的数据,即指标。如图1中一个cell中包含了两个度量值:装箱数和截至时间,可以对其进行多维分析。
  事实表:存放度量值的表,同时存放了维表的外键。所有的分析用的数据最终都是来自与事实表。
  维表:一个维度对应一个或者多个维表。一个维度对应一个维表时数据的组织方式就是采用的星型模式,对应多个维表时就是采用雪花模式。雪花模式是对星型模式的规范化。简言之,维表是对维度的描述。
  除此之外,OLAP还定义了多维模型的查询语言MDX(MDX是微软发布的多维查询语言标准),它的语法与SQL有很多相似之处:
    select {[Measures].[Salary]} on columns,
  [Employee].[employeeId].members on rows from CubeTest 对于这条语句,COLUMNS 和 ROWS都代表查询轴,其中COLS代表列轴,ROWS代表行轴。COLUMNS又可以写成0,ROWS又可以写成1,当只有两个查询轴时,可以理解为结果的展现格式是一个平坦二维表。这条语句的含义就是查询名字为CubeTest的立方体,列显示Measures维度的salary,行显示Employee维度employeeId级别的所有成员,那么得出的结果就是employeeId所有成员的salary,也就是所有员工的薪酬。

    必须掌握内容:
        1.理解BI的概念。
        2.熟练使用ETL工具。(如:Kettle)
        3.建模工具。(如:CubeDesigner-0.7.2.0_Win32)
        4.熟练使用OLAP开源框架。(如:JPivot+Mondrian)
        5.掌握Schema语法。
        6.掌握MDX语法。

    OLAP准备过程:
        1.数据仓库:数据仓库是OLAP的基础,用ETL工具来完成。
        2.数据建模:根据数据仓库物理模型来建立OLAP模型(Schema定义的XML),OLAP是基于MDX查询语言,只有这样才能符合MDX查询标准。
        3.学习JPivot+Mondrian代码:整合到实际项目中,进行二次开发:页面美化、功能扩展(如:自定义列,维度添加条件等)。
        4.或者直接使用BI套件包括以上所有功能如:pentaho社区版(在sourceforge下载的)。

MDX语句实例:
   1.
select {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} ON COLUMNS,
	  Hierarchize(Union(Union(
	  Union(
	  Union(
	  Filter(Crossjoin({[Promotion Media].[All Media]}, {[Product].[All Products]}),[Measures].[Unit Sales]>=500)
	  , Crossjoin({[Promotion Media].[All Media]}, [Product].[All Products].Children))
	  , Crossjoin({[Promotion Media].[All Media]}, [Product].[All Products].[Non-Consumable].Children))
	  , Union(Union(Crossjoin([Promotion Media].[All Media].Children, {[Product].[All Products]})
	  , Crossjoin([Promotion Media].[All Media].Children, [Product].[All Products].Children))
	  , Crossjoin([Promotion Media].[All Media].Children, [Product].[All Products].[Non-Consumable].Children)))
	  , Crossjoin({[Promotion Media].[All Media].[Bulk Mail]}, [Product].[All Products].[Drink].Children))) ON ROWS
	from [Sales]
    Filter为添加维度条件。

   2.
with member [Measures].[Custom] as [Measures].[Unit Sales]-1000
	select {[Measures].[Unit Sales], [Measures].[Custom]} ON COLUMNS,
	  {([Promotion Media].[All Media], [Product].[All Products])} ON ROWS
	from [Sales]
    with member为自定义列。

MDX语法:http://msdn.microsoft.com/zh-cn/library/ms145506.aspx
Schema定义:http://mondrian.pentaho.com/documentation/schema.phphttp://jacky6024.iteye.com/blog/412985
JPivot+Mondrian用法:http://fuwa-jane.iteye.com/blog/310933http://zhangjj616.iteye.com/blog/149663
开源项目:http://mengqingyu.iteye.com/blog/906457   
分享到:
评论

相关推荐

    SQLServer OLAP实验详解(含数据)

    在本实验中,我们将深入探讨SQLServer在在线分析处理(OLAP)以及数据挖掘中的应用。这个实验基于一个名为FoodMart的数据集,该数据集是一个典型的企业级零售业务数据库,适用于展示多维数据分析和数据仓库的功能。...

    clickhouse实践

    1. OLAP详解 OLAP(在线分析处理)是针对大规模数据进行复杂分析和快速查询的技术。与在线事务处理(OLTP)不同,OLAP更注重于数据的读取和分析,而非事务处理。传统的数据库如MySQL适合OLTP,但在OLAP场景下,其性能...

    Mondrian开源OLAP引擎详解.docx

    Mondrian开源OLAP引擎详解 Mondrian 是一个基于 Java 语言的开源 OLAP 引擎,它通过 MDX 语句执行查询,从关系型数据库 RDBMS 中读取数据,然后经过 Java API 以多维度的形式展示查询结果。Mondrian 是一个 Open...

    olap4j 0.9.7.309-JS-3 jar包

    **olap4j 0.9.7.309-JS-3 jar包详解** 在Java编程领域,jar(Java Archive)包是用于存储Java类、资源文件和元数据的压缩格式,它使得开发者可以将相关的类组织在一起,便于分发和使用。"olap4j 0.9.7.309-JS-3 jar...

    ibm DB2 OLAP 安装和使用指南

    ### IBM DB2 OLAP 安装与使用指南详解 #### 一、IBM DB2 OLAP 概述 **IBM DB2 OLAP** 是一款由IBM公司开发的数据仓库解决方案,它结合了关系数据库管理系统(DBMS)的优势与在线分析处理(OLAP)的功能。此文档主要...

    Druid 实时OLAP数据仓库架构详解

    Druid:为OLAP而生,多快好省高。 • 多,可以处理海量的数据, Druid官网说可以扩展到PB级,这个量非常大。 • 快,亚秒级响应,官网说10亿量级下做到亚秒响应,我们实际应用也是亚秒响应,实时导入,导入即可查询...

    OLAP技术全览:从理论到应用详解.pdf

    OLAP的统一及技术趋势:StarRocks架构和实践分享、大数据分析平台之云原生OLAP架构的最佳实践、开源大数据OLAP的思考及最佳实践、滴滴OLAP的技术实践与发展方向、小米OLAP引擎在Trino的应用实践、基于OLAP和指标体系...

    OLAP引擎原理

    ### OLAP引擎原理详解 #### 一、OLAP引擎简介 **OLAP(Online Analytical Processing)**,即在线分析处理,是一种数据处理技术,它能够支持用户对数据进行多角度、多维度的分析,特别适合于商业智能场景中的数据...

    ORACLE OLAP函数语法的总结

    ### ORACLE OLAP函数语法详解 #### 一、概述 Oracle OLAP(Online Analytical Processing)函数主要用于执行复杂的分析计算,如聚合、排名、趋势分析等。这些函数可以帮助用户更高效地处理大型数据集,特别是在数据...

    BI OLAP MDX函数使用大全

    #### 三、MDX函数详解 ##### 1. 数组函数 - SetToArray - **功能**:将一个或多个集合转换为数组形式,便于在自定义函数中使用。 - **示例**:假设有一个包含不同地理位置的集合`SampleSet`,我们可以通过`Set...

    TIDb OLAP+Database.pdf

    #### 三、TiDB架构详解 ##### 3.1 架构概述 TiDB采用三层架构设计,包括SQL层、调度器(Placement Driver, PD)和服务端存储层(TiKV): - **SQL层**:负责接收客户端请求,并对SQL语句进行解析、优化。 - **PD...

    OLTP和OLAP的区别

    ### OLTP与OLAP的区别详解 #### 一、引言 在现代信息技术领域,随着数据量的爆炸性增长以及业务需求的多样化发展,如何高效、准确地管理和利用这些数据成为了企业和组织关注的重点。在此背景下,两种重要的数据...

    2023 OLAP峰会(公开)PPT汇总(25份).zip

    从 TP 到 AP, OceanBase OLAP 核心技术详解 多云缓存在知乎的演进_datafun 混合存储架构中的数据编排 MatrixOne: HTAP 数据库中的 OLAP 设 3、开源OLAP技术论坛 EMR StarRocks 引擎产品化实践 one-service 数据...

    OLAP在线分析计算汇总公式操作说明

    《OLAP在线分析计算汇总公式详解》 OLAP(Online Analytical Processing,在线分析处理)是一种用于数据分析的技术,尤其在商业智能领域广泛应用。Cognos Report Studio是IBM的一款强大报表工具,它支持OLAP操作,...

    sybase iq olap.pdf

    ### Sybase IQ OLAP:性能与调优指南详解 #### 一、引言 Sybase IQ OLAP 是一款专门针对在线分析处理(OLAP)设计的高性能数据库解决方案,旨在为用户提供快速的数据查询和分析能力。Sybase IQ 以其列式存储技术和...

    OLAP的MDX语句运用

    ### OLAP的MDX语句运用详解 #### 一、OLAP与MDX简介 - **OLAP(Online Analytical Processing)**:联机分析处理,是一种数据仓库环境中的数据分析技术,提供快速、灵活的数据访问能力,以支持复杂的分析操作,并...

    Oracle9i OLAP

    ### Oracle9i OLAP知识点详解 #### 一、Oracle9i OLAP简介 **Oracle9i OLAP**是Oracle公司推出的面向联机分析处理(Online Analytical Processing, OLAP)的功能模块之一,专为商业智能(Business Intelligence, ...

    Oracle Hyperion Essbase - OLAP介绍 - 培训资料

    ### Oracle Hyperion Essbase - OLAP介绍 - 培训资料知识点详解 #### 数据转换(Data Transformation) 数据转换是将原始数据转化为更有价值、更易分析的信息的过程。在这个过程中,原始数据通过清洗、聚合、标准...

Global site tag (gtag.js) - Google Analytics