from : http://blog.csdn.net/zhoucd_dl/archive/2008/01/16/2047094.aspx
首先,我只是個初學者,希望能與大家一起交流,下面的學習總結中有著很的疑惑,需要同仁的解答,另外也希望可以為大家一起分享mondrian
  聯機分析處理(OLAP)的概念最早是由關系數據庫之父E.F.Codd于1993年提出的,他同時提出了關于OLAP的12條準則。OLAP的提出引起了很大的反響,OLAP作為一類產品同聯機事務處理(OLTP)明顯區分開來。
  當今的數據處理大致可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是數據倉庫統的主要應用,支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。
  這里我們單獨說下OLAP. 聯機分析處理(OLAP)的主要特點,是直接仿照用戶的多角度思考模式,預先為用戶組建多維的數據模型,在這里,維指的是用戶的分析角度。例如對銷售數據的分析,時間周期是一個維度,產品類別、分銷渠道、地理分布、客戶群類也分別是一個維度。一旦多維數據模型建立完成,用戶可以快速地從各個分析角度獲取數據,也能動態的在各個角度之間切換或者進行多角度綜合分析,具有極大的分析靈活性。這也是聯機分析處理在近年來被廣泛關注的根本原因,它從設計理念和真正實現上都與舊有的管理信息系統有著本質的區別。
  其中我們現在學習的mondrian則是OLAP中的service位置.它負責將組裝cube,分析MDX,以及提取數據并組成多維,可以說負責的是后臺的數據處理.
  mondrian包含4層:表示層,計算層,聚集層,存儲層.
  表示層:指最終呈現在用戶顯示器上的,以及與用戶之間的交互,有許多方法來展現多維數據,包括數據透視表,餅,柱,線狀圖.
  計算層:分析,驗證,執行MDX查詢.
  聚集層:一個聚集指內存中一組計算值(cell),這些值通過維列來限制.計算層發送單元請求,如果請求不在緩存中,或者不能通過旋轉聚集導出的話,聚集層向存儲層發送請求.聚合層是一個數據緩沖層,從數據庫來的單元數據,聚合后提供給計算層。聚合層的主要作用是提高系統的性能。
  存儲層:提供聚集單元數據和維表的成員,這些層可以不在同一機子上,但是計算和聚集層必須是同一臺機子.
  在學習mondrian中主要的是對配置文件schema,這里引用官方網站文檔里面的例子.
   uniqueMembers="true"/>  uniqueMembers="true"/>
   uniqueMembers="false"/>  uniqueMembers="false"/>
   uniqueMembers="false"/>  uniqueMembers="false"/>
  
  
   aggregator="sum" formatString="#,###"/>  aggregator="sum" formatString="#,###"/>
   aggregator="sum" formatString="#,###.##"/>  aggregator="sum" formatString="#,###.##"/>
   formula="[Measures].[Store Sales]-[Measures].[Store Cost]">  formula="[Measures].[Store Sales]-[Measures].[Store Cost]">

  schema定義了一個多維數據庫。包含了一個邏輯模型,而這個邏輯模型的目的是為了書寫MDX語言的查詢語句。這個邏輯模型實際上提供了這幾個概念:Cubes,維度(Dimensions),層次(Hierarchies),級別(Levels),和成員(Members)。而schema文件就是編輯這個schema的一個xml文件。在這個文件中形成邏輯模型和數據庫物理模型的對應。
  l Cubes. 一個Cube是一系列維度(Dimension)和度量(Measure)的集合區域。在Cube中,Dimension和Measure的共同地方就是共用一個事實表。這個Cubes中的屬性有:name(Cubes的名字),caption(標題,你要在表示層顯示的),cache(是否對Cubes對應的實表用mondrian進行存儲,默認為 true),enabled(是布爾型的,如果是被激活,Cubes就執行,否則就不于理睬)里面有一個全局的  標簽確定了所用的事實表的表名
  l Diminsion,他是一個層次(Hierarchies)的集合, 維度一般有其相對應的維度表.他的組成是由層次(Hierarchies)而層次(Hierarchies)又是有級別(Level)組成.其屬性:name,type(有兩個屬性” Standard”和”Time”默認為Standard),caption,UsagePrefix(加前綴,消除歧義,有點模糊)
  l Hierarchy,你一定要指定其中的各種關系,如果沒有指定,就默認Hierarchy里面裝的是來自立方體中的真實表. 屬性:name,hasAll(布爾型的,決定是否包含全部的成員member),AllMemberName(所有成員的名字,也就是總的tile,例如: AllMemberName=”全部產品”), alllevelname(所有級別的名字 ,很少用), allMemberCaption(例如: allMemberCaption=” 全部產品”這個是在表示層顯示的內容). PrimaryKey(通過主鍵來確定成員,要是沒他就默認**模糊中!) primaryKeyTable(描述主鍵的表),defaultMember,memberReaderClass
  (定義的類的名字一定要) caption.
  l Measure, 他就是我們要計算的數值,BI中要面對的主題,具體到頁面上的顯示的測量數值.
  屬性:name,column(對應數據庫中的某個字段,), formatString(顯示的格式),aggregetor(我理解為計算的函數,例如; aggregator="count"), datatype,formatter(模糊),caption,visible(是否可見 布爾型).
  l Level,級別,他是組成Hierarchy的部分.屬性非常多,并且是schema編寫的關鍵.屬性:name,table(用到的表),column,namecolumn, Oridinalcolumn(字段的順序,只對Hierarchy中的最后一個級別Level有作用,如果沒指定字段 就不會排序),parentColumn( 涉及到的上一級Hierarchy成員字段的名字) NullParentValue(看成沒有上一級的Hierarchy的數值,代表為”null””0”),type,UniqueMember(是布爾型的,判斷在上級中是否是唯一的,例如:zipcodes are unique across all states.Thefirstlevel\'s members are always unique.), levelType(決定這是否是一個有次序或者是時間關系的級別例如:YTD 是year-to-date), captionColumn,formatter,caption,HideMemberIf(概念模糊).可以看出level有很多的屬性,所用功能也是比較強大的.
  MDX
  MDX是為了查詢多維數據的,而SQL是為了查詢關系數據庫的。而Mondrian所涉及到的一些MDX概念、MDX語法以及系統定義的MDX函數和微軟的MDX十分接近,差別微小。完全可以參考微軟的幫助文檔進行學習。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhoucd_dl/archive/2008/01/16/2047094.aspx