`
mengqingyu
  • 浏览: 328508 次
  • 性别: 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   
分享到:
评论

相关推荐

    Mondrian开源OLAP引擎详解.docx

    Mondrian开源OLAP引擎详解Mondrian开源OLAP引擎详解Mondrian开源OLAP引擎详解Mondrian开源OLAP引擎详解Mondrian开源OLAP引擎详解

    SQLServer OLAP实验详解(含数据)

    SQLServer OLAP实验详解,内含数据备份文件,以FoodMart为案例,讲解使用SQLServer 经历数据仓库,进行OLAP分析,建立数据挖掘模型。

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

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

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

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

    Oracle_详解分析函数

    详解Oracle分析函数,主用于OLAP,以实例讲解分析函数. 如: 排序用Rank, Dense_rank, row_number 1.带空值的排列 2.Top/Bottom N查询 3.First/Last排名查询 4.按层次查询 1.窗口函数简介 2.窗口函数示例-全统计 3....

    JPivot标签使用详解 中文

    JPivot标签使用详解 中文 JPivot 是一套基于 Mondrian 的 OLAP 前端展现工具,它提供了一套标签库来解决的 OLAP 的展现层问题。 包含标签: chart chooseQuery ...

    SpringBoot整合Druid应用的方法详解.docx

    Druid 是一个分布式的、支持实时多维 OLAP 分析的数据处理系统。它既支持高速的数据实时摄入处理,也支持实时且灵活的多维数据分析查询。 Druid已经在阿里巴巴部署了超过600个应用,经过生产环境大规模部署的严苛...

    SQL开窗函数详解.pdf

    SQL开窗函数(也称为分析函数或OLAP函数)是一种高级功能,允许用户执行复杂的计算和聚合操作,同时保持与原始数据行的关联。这些函数在SQL查询中提供了更多的灵活性和强大的分析能力,使得用户能够更深入地洞察数据...

    书籍 《Apache Kylin》详解

    Apache Kylin是Hadoop大数据平台上的一个开源OLAP引擎。它采用 多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚秒级别。 相对于之前的分钟乃至小时级别的查询速度,亚秒级别速度是百倍到千 倍的提升,该...

    GreenPlum–索引详解

    2)OLAP系统中,累积了大量的历史数据,而且修改和删除的操作会比OLTP系统少很多。 3)分布式数据库中,对顺序读取的性能是非常高的,而索引本质上是个随机寻址操作,这不适合分布式数据库。 4)对于GP而言,数据...

    clickhouse 在centos7 下离线安装包

    ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各个大厂纷纷跟进大规模使用:clickhouse 在centos7 下离线安装包。

    SQL2005CLR函数扩展-深入环比计算的详解

    环比就是本月和上月的差值所占上月值的比例。在复杂的olap计算中我们经常会用到同比环比等概念,要求的上个维度的某个字段的实现语句非常简练,比如ssas的mdx语句类似[维度].CurrentMember.Prevmember就可以了

    大数据技术之ClickHouse视频教程

    ClickHouse多方面的优秀表现使其成为构建离线数仓、实时数仓的不二选择,深受大厂青睐,成为了近年来一个异军突起的OLAP引擎,一匹真正的黑马。 不负粉丝期待,深入研发探索,解锁大家最感兴趣的ClickHouse知识点。...

    【推荐】最强大数据学习与最佳实践资料合集(基础+架构+数仓+治理+案例)(100份).zip

    HDFS-part2-原理详解 HDFS核心内容及命令-2020 hive安装 hive语法和常用函数 Kafka安装 kylin安装 mapreduce调优指南 sqoop安装 二、架构篇 Flink-1.11 Hive集成与批流一体 ClickHouse在苏宁用户画像场景的实践 ...

    数据仓库与数据挖掘教程

    数据仓库与数据挖掘教程,从数据库仓库和挖掘的特点,功能等方面进行详解!

    oracle学习经典教程

    1.2 索引详解..................28 1.2.1 索引介绍.........28 1.2.1.1 索引的创建语法......28 1.2.1.2 索引特点..................28 1.2.1.3 索引不足..................29 1.2.1.4 应该建索引列...

    jpivot学习总结.doc

    JPivot 是一套基于 Mondrian 的 OLAP 前端展现工具,它提供了一套标签库来解决的 OLAP 的展现层问题。 在一个 JSP 页面当中,如果要使用 JPivot 标签库,除了要配置相关的配置文件外,我们需要在 JSP 头的位置声明...

    TianleSoftware Oracle中文学习手册

    1.2 索引详解 ........................................................................................................... 1.2.1 索引介绍 ...................................................................

    169集全新MySQL课程 MySQL技能全面探索 MySQL核心特训教程 MySQL零基础实战班视频

    ├─7、课程:SQL进阶使用(上).14、约束详解Primary KEY.mp4 ├─7、课程:SQL进阶使用(上).1、作业讲解(一).mp4 ├─7、课程:SQL进阶使用(上).2、作业讲解(二).mp4 ├─7、课程:SQL进阶使用(上).3、...

    SAP屠夫作品汇总

    Material Ledger 物料分类账详解 552 一.ML功能简介 552 二.标准价Pk加权平均价 559 三.差异来源和差异处理 564 四.SAP差异科目设置 565 利润中心(Profit Center Accounting) 565 1 基本设置(Basic Settings) 566 2 ...

Global site tag (gtag.js) - Google Analytics