咱们知道,大部分公司都拥有了本身的财务,OA,CRM 等系统。这些系统都有本身的独立数据库,记录着企业运行状况某个方面的数据。可是单独看这些系统的报表,并不必定能对企业运行状况有全面客观的了解。就像只凭身高不能判断一我的是否健康,因此体检的时候咱们须要化验许多指标,作各类检测,就是为了对身体状况有更全面的了解,做出更准确的判断。 javascript
一样对一个企业,不能仅根据出勤率就判断一我的的绩效高低,由于你不知道他的工做成果状况。仅根据财务报表输入支出也体现不了各部门的收益状况,这个部门有多少工做人员,完成了哪些任务你也不知道。正式因为这种需求,产生了OLAP(Online analytical processing )应用,在创建了聚集各系统数据的数据仓库后,OLAP应用能够快速解析多维的查询分析,针对查询出的数据,用户也能够方便的进行钻取,如查询出了年度数据,能够很方便的查看月度数据;查询好地区的数据,能够再看相应城市的数据,还能够显示相应的趋势图,柱状图,饼图等,从而给决策者的判断提供有效的数据支持。 java
1、数据抽取(底层) 数据库
咱们作饭以前,先要从菜场各个摊位去买咱们须要的原材料,如青菜,番茄,鸡蛋,和鱼,而后把菜上的老叶子去掉,鱼鳞和内脏去掉,洗干净。创建OLAP应用以前,咱们要想办法把各个独立系统的数据抽取出来,通过必定的转换和过滤,存放到一个集中的地方,成为数据仓库。这个抽取,转换,加载的过程叫ETL(Extract, Transform,Load).相应的开发工具Oracle有DataStage,微软有SQL Server Integration Services,Pentaho有Kettle。这些ETL工具通常都支持图形化流程建模,文本文件映射导入,XML,XSLT,可执行SQL,javascript等。 工具
2、数据建模(中间层) 开发工具
材料准备好后,咱们要规划他们能够作出什么样的菜。首先咱们选择主要材料:如鱼,一样是鱼,能够有多种烧法,红烧,清蒸,油炸,水煮。不一样的烧法还要搭配相应的辅助材料,如红烧必定要酱油和葱姜。想好了菜单,实际上就已经把这些原材料按不一样的组合创建了必定的关系。对于OLAP应用,也要根据客户需求,咱们对数据仓库中这些物理存在的表要进行逻辑建模,以某些重要的事实数据(如销售数据)为核心,创建与其余物理表(维度表)之间的业务关系。如销售数据跟部门表,客户表之间的关系。事实和维度之间的组合,就创建了未来作多维查询的基础。建模过程造成的结果在各中平台上的叫法不同,如BO的叫Universe,Oracle中叫Cube,SqlServer2005的叫统一维度模型UDM,开源Pentaho中也叫Cube。相应的开发工具BO有Business Objects Crystal Decisions,Oracle有 Analytic WorkspaceManager ,SqlServer2005有BusinessIntelligence Development Studio,Pentaho有Schema Workbench。相对其余商业产品,Schema Workbench比较简单,也没有和软件开发平台如Eclipse集成在一块儿。 spa
3、多维查询(服务层和应用层) 设计
准备好了原材料和相应的菜单,接下来就是根据要求烧菜了。这当中须要有一种表达需求的语言,例如一样是这个红烧鱼,有的人但愿甜一些,有些人不喜欢放葱。若是有一个标准的语言描述这种执行要求,就能保证烧的菜符合你的口味了。一样,有了表达逻辑关系的模型Cube,数据仓库中也导入了业务数据,咱们还要告诉执行引擎如何取得咱们真正所要的数据。这个查询语言就是MDX(Multidimensional Expression),它是微软在1997年首次提出,并为多家厂商采用。 orm
4、应用分析(应用层) ip
烧好了菜,还要决定如何上菜,是用碗,用盘子仍是砂锅,这些都要根据所作的菜式和客户要求。MDX查询返回的是多维数据,普通的二维表很难表现超过2个维度的数据,若是要进行数据的钻取等操做更是难上加难。各厂家的技术平台都有想应的实现技术。比较底层的界面表现技术Oracle 有Business Intelligence Beans,开源的有JPivot,这些须要开发相应的展现页面和维护界面,但能够和已有的系统紧密结合。另外为了方便用户使用和维护,也有作成可运行程序的系统平台。如Oracle有Oracle Business IntelligenceFoundation,开源的有SpagoBI,Pentaho BI Platform等。这些系统都有完整的DashBoard,多维查询,报表等功能,使用维护都比较方便,缺点就是比较庞大笨重。 ci
用户需求决定了如何设计模型和数据仓库,数据模型又是描述数据仓库的逻辑关系,而数据模型和数据仓库的某些技术限制也可能影响用户需求的实现。这三者之间是相互依存和影响着的。而MDX查询,又是这三者之间的粘合剂,它表达了用户的需求,通过OLAP引擎的解析,根据数据模型的描述,从数据仓库找到所须要的数据。