1. 程式人生 > >Mondrian Schema workbench工作介面 簡介

Mondrian Schema workbench工作介面 簡介

Mondrian Schema workbench工作介面 簡介

Schema

Schema 定義了一個多維資料庫。包含了一個邏輯模型,而這個邏輯模型的目的是為了書寫 MDX 語言的查詢語句。這個邏輯模型實際上提供了這幾個概念: Cubes (立方體)、維度( Dimensions )、層次( Hierarchies )、級別( Levels )、和成員( Members )。而一個 schema 檔案就是編輯這個 schema 的一個 xml 檔案。在這個檔案中形成邏輯模型和資料庫物理模型的對應。

Cube

一個 Cube 是一系列維度 (Dimension) 和度量 (Measure) 的集合區域。在 Cube 中, Dimension 和 Measure 的共同地方就是共用一個事實表。 Cube 中的有以下幾個屬性:

屬性名

含義

name

Cube 的名字

caption

標題 , 在表示層顯示的

cache

是否對 Cube 對應的實表用 mondrian 進行儲存 , 預設為 true

enabled

是布林型的 , 如果是被啟用 ,Cubes 就執行 , 否則就不予理睬,預設為 true

Cube 裡面有一個全域性的標籤定義了所用的事實表的表名

Dimension

他是一個層次( Hierarchies )的集合 , 維度一般有其相對應的維度表 . 他的組成是由層次( Hierarchies )而層次( Hierarchies )又是有級別( Level )組成 . 其屬性如下:

屬性名

含義

name

Dimension 的名稱

type

型別,有兩個可選的型別: StandarDimension 和 TimeDimension ,預設為 StandardDimension

caption

標題 , 在表示層顯示的

UsagePrefix

加字首 , 消除歧義

foreignKey

外來鍵,對應事實表中的一個列,它通過 <Hierarchy> 元素中的主鍵屬性連線起來。

Hierarchy

你一定要指定其中的各種關係 , 如果沒有指定 , 就預設 Hierarchy 裡面裝的是來自立方體中的真實表 . 屬性如下:

屬性名

含義

name

Hierarchy 的名稱,該值可以為空,為空時表示 Hirearchy 的名字和 Dimension 的名字相同。當一個 Dimension 有多個 Hierarchy 時,注意 name 值要唯一。

hasAll

布林型的 , 決定是否包含全部的成員 member

allMemberName

所有成員的名字 , 也就是總的標題 , 例如: allMemberName= “全部產品”

allLevelName

所有級別的名字,它會覆蓋其下所有的 Member 的 name 和所有的 Level 的 name 屬性的值。

allMemberCaption

例如 : allMemberCaption= “全部產品”這個是在表示層顯示的內容

PrimaryKey

通過主鍵來確定成員,該主鍵指的是成員表中的主鍵,該主鍵同時要與 Dimension 裡設定的 foreignKey 屬性對應的欄位形成外來鍵對應關係

primaryKeyTable

如果成員表不只一個,而是多個表通過 join 關係形成的,那麼就要通過這個屬性來指明 join 的這些表中,哪一個與 Dimension 裡設定的 foreignKey 屬性形成外來鍵關係。通過該屬性來指明主表

caption

標題 , 在表示層顯示的

defaultMember

memberReaderClass

設定一個成員讀取器,預設情況下 Hierarchy 都是從關係型資料庫裡讀取的,如果你的資料不在 RDBMS 裡面的話,你可以通過自定義一個 member reader 來表現一個 Hierarchy 。

Level

級別 , 他是組成 Hierarchy 的部分。屬性很多,並且是 schema 編寫的關鍵,使用它可以構成一個結構樹, Level 的先後順序決定了 Level 在這棵樹上的的位置,最頂層的 Level 位於樹的第一級,依次類推。 Level 的屬性如下:

屬性名

含義

name

名稱

table

該 Level 要使用的表名

column

用上面指定的表中某一列作為該 Level 的關鍵字

nameColumn

用來顯示的時候使用,如果不定義,那麼就採用上面的 column 的值來進行顯示。

oridinalColumn

定義該 Level 上的成員的顯示順序,如果不指定,那麼採用 column 的值。

parentColumn

在一個有父 - 子關係的 Hierarchy 當中,當前 Level 引用的是其父成員的列名。好比是一張部門表,在一張表裡表現部門的上下級關係,一個是主鍵,肯定還有一個欄位為連線到該主鍵的外來鍵的列名,這裡的 parentColumn 指的就是這個列名。

nullParentValue

如果當前的 Level 是有上下級關係(設定了 parentColumn 屬性),如果該 Level 又處於頂級,我們需要將頂級的資料取出來,這裡指的是位於頂級的父成員的值,有些資料庫不支援 null, 那麼也可以使用 ’0’ 或 ’-1’ 等,這就表示頂級的成員的父 ID 為 ’0’ 或為 ’-1’ 。

type

資料型別,預設值為 string 。當然還可以是 Numeric 、 Integer 、 Boolean 、 Date 等。

uniqueMembers

該屬性用於優化產生的 SQL ,如果你知道這個級別和其父級別交叉後的值或者是維度表中給定的級別所有的值是唯一的,那麼就可以設定該值為 true ,否則為 false 。

levelType

該 Level 的型別,預設為 regular (正常的),如果你在其 Dimension 屬性 type 裡選擇了 TimeDimension 那麼這裡就可以選擇 TimeYears 、 TimeQuarters 、 TimeMonth 、 TimeWeeds 、 TimeDays 。

hideMemberIf

在什麼時候不隱藏該成員,可選的值有三個: Never 、 IfBlankName 、 IfParentName

approxRowCount

該屬性可以用來提高效能,可以通過指定一個數值以減少判斷級別、層次、維度基數的時間,該屬性在通過使用 XMLA 連線 Mondrian 很有用處。

caption

標題 , 在表示層顯示的

captionColumn

用來顯示標題的列

formatter

該屬性定義了 Member.getCaption() 方法返回的動作值,這裡需要是一個實現了 mondrian.olap.MemberFormatter 介面的類,用來對 Caption 地值進行格式化。

Join

對於一個 Hierarchy 來說,有兩種方式為其指定:一種是直接通過一個 Table 標籤指定;一種是通過 Join 將若干張表連線起來指定。一旦採用 Join 的話,那麼就要在 Hierarchy 裡的 primaryKeyTable 屬性指定主表。

Measure

Measure 就是我們要計算的數值,操作的核心。它的屬性如下:

屬性名

含義

name

名稱

aggregator

要採用的計算函式

column

要計算的列名

formatString

計算結果的顯示格式。

visible

是否可見

datatype

資料型別,預設為 Numeric

formatter

採用類來對該 Measure 的值進行格式,具體參考 Level 的 formatter 屬性。

caption

標題,用來顯示時使用。