entaho schema workbench Mondrian
http://www.sjsjw.com/105/000790MYM013012/
pentaho schema workbench 圖文教程
通過簡單示例,介紹schema workbench的使用方法。表的示例是從網(wǎng)絡(luò)上找的一個簡單銷售表及產(chǎn)品、產(chǎn)品類別、客戶維度表組成;邏輯簡單易懂。
1、 創(chuàng)建示例數(shù)據(jù)庫
1.1. 創(chuàng)建表SQL
共四張表,一個事實表,三個維度表,創(chuàng)建表的語句如下:
/**銷售表*/
create table Sale (
saleId intnot null,
proId intnull,
cusId intnull,
unitPricefloat null, --單價
number intnull, --數(shù)量
constraintPK_SALE primary key (saleId)
)
/**用戶表*/
create table Customer (
cusId intnot null,
genderchar(1) null, --性別
constraintPK_CUSTOMER primary key (cusId)
)
/**產(chǎn)品表*/
create table Product (
proId intnot null,
proTypeIdint null,
proNamevarchar(32) null,
constraintPK_PRODUCT primary key (proId)
)
/**產(chǎn)品類別表*/
create table ProductType (
proTypeIdint not null,
proTypeNamevarchar(32) null,
constraintPK_PRODUCTTYPE primary key (proTypeId)
)
1.2. 插入示例數(shù)據(jù)
insert into Customer(cusId,gender) values(1,'F')
insert into Customer(cusId,gender) values(2,'M')
insert into Customer(cusId,gender) values(3,'M')
insert into Customer(cusId,gender) values(4,'F')
insert into producttype(proTypeId,proTypeName)values(1,'電器')
insert into producttype(proTypeId,proTypeName)values(2,'數(shù)碼')
insert into producttype(proTypeId,proTypeName)values(3,'家具')
insert into product(proId,proTypeId,proName)values(1,1,'洗衣機(jī)')
insert into product(proId,proTypeId,proName)values(2,1,'電視機(jī)')
insert into product(proId,proTypeId,proName)values(3,2,'mp3')
insert into product(proId,proTypeId,proName)values(4,2,'mp4')
insert into product(proId,proTypeId,proName) values(5,2,'數(shù)碼相機(jī)')
insert into product(proId,proTypeId,proName)values(6,3,'椅子')
insert into product(proId,proTypeId,proName)values(7,3,'桌子')
insert into sale(saleId,proId,cusId,unitPrice,number)values(1,1,1,340.34,2)
insert into sale(saleId,proId,cusId,unitPrice,number)values(2,1,2,140.34,1)
insert into sale(saleId,proId,cusId,unitPrice,number)values(3,2,3,240.34,3)
insert into sale(saleId,proId,cusId,unitPrice,number)values(4,3,4,540.34,4)
insert into sale(saleId,proId,cusId,unitPrice,number)values(5,4,1,80.34,5)
insert into sale(saleId,proId,cusId,unitPrice,number)values(6,5,2,90.34,26)
insert into sale(saleId,proId,cusId,unitPrice,number)values(7,6,3,140.34,7)
insert into sale(saleId,proId,cusId,unitPrice,number)values(8,7,4,640.34,28)
insert into sale(saleId,proId,cusId,unitPrice,number)values(9,6,1,140.34,29)
insert into sale(saleId,proId,cusId,unitPrice,number)values(10,7,2,740.34,29)
insert into sale(saleId,proId,cusId,unitPrice,number)values(11,5,3,30.34,28)
insert into sale(saleId,proId,cusId,unitPrice,number)values(12,4,4,1240.34,72)
insert into sale(saleId,proId,cusId,unitPrice,number)values(13,3,1,314.34,27)
insert into sale(saleId,proId,cusId,unitPrice,number)values(14,3,2,45.34,27)
2、 schema概要說明
Schema 定義了一個多維數(shù)據(jù)庫。包含了一個邏輯模型,而這個邏輯模型的目的是為了書寫 MDX 語言的查詢語句。邏輯模型包括幾個概念: Cubes (立方體)、維度( Dimensions )、層次( Hierarchies )、級別( Levels )、和成員( Members )。而一個 schema 文件就是編輯這個 schema 的一個 xml 文件。在這個文件中形成邏輯模型和數(shù)據(jù)庫物理模型的對應(yīng)。schemaworkbench 工具創(chuàng)建xml文件非常簡單易用。
3、 通過schema workbench創(chuàng)建schema文件
3.1、 配置數(shù)據(jù)庫連接
創(chuàng)建數(shù)據(jù)庫連接,需要事先拷貝數(shù)據(jù)庫驅(qū)動程序到schema workbench目錄下的drivers文件夾中,然后啟動workbench程序,從Optionsàconnection…或者如下圖所示點擊工具欄按鈕。
|
輸入連接屬性,測試成功,確定關(guān)閉窗口。 3.2、 創(chuàng)建schema文件 從文件菜單或點擊工具欄新建按鈕,創(chuàng)建schema,彈出界面如下: |
|
給schema命名SaleSchema并保存; 3.3、 創(chuàng)建cube 一個 Cube 是一系列維度 (Dimension) 和度量 (Measure) 的集合區(qū)域。在 Cube 中, Dimension 和Measure 的共同地方就是共用一個事實表。 在左邊視圖中選擇schema節(jié)點,點擊工具欄cube按鈕或右鍵菜單中,增加cube,然后給cube命名SalesCube并保存。 |
|
在cube節(jié)點上點擊右鍵,增加事實表,選擇相應(yīng)的事實表sale。如下圖: |
|
點擊工具欄編輯模式按鈕可以切換查看對應(yīng)生成的xml文件。 |
|
3.4、 增加客戶維度 維度是一個層次( Hierarchies )的集合 , 維度一般有其相對應(yīng)的維度表 . 他的組成是由層次( Hierarchies )而層次( Hierarchies )又是有級別( Level )組成 。在cube上右鍵增加維度,并命名dimCustomer保存。需要選擇foreignKey,即在事實表中用于引用customer表的外鍵。 |
|
增加對應(yīng)的層次,默認(rèn)已經(jīng)給我們建好了一個層次,展開dimCustomer維度看到。修改層次屬性,名稱可以為空,同時修改 allMemberName,allMemberCaption以及primaryKey字段的值(維表的主鍵);增加維表Customer。 |
|
3.4.1、 增加級別 是組成 Hierarchy 的部分。屬性很多,并且是 schema 編寫的關(guān)鍵,使用它可以構(gòu)成一個結(jié)構(gòu)樹, Level 的先后順序決定了 Level 在這棵樹上的的位置,最頂層的 Level 位于樹的第一級,依次類推。 選擇級別對應(yīng)的列名稱即可。 |
|
3.5、 增加產(chǎn)品維度 因為產(chǎn)品維由兩個表連接而成,稍稍有些復(fù)雜;還是在cube節(jié)點上右鍵增加維度。輸入名稱和事實表中關(guān)聯(lián)外鍵。 |
|
修改默認(rèn)添加的維度信息,在此維度節(jié)點上右鍵添加join,分別為Product和ProductType.所以需要在維度信息的primaryKeyTable屬性中指明主表。 |
|
設(shè)定join的左右表,然后設(shè)定join關(guān)聯(lián)建leftKey和rightKey,完成之后,在維度信息設(shè)置primaryKeyTable,則primaryKey自動設(shè)置為proId。 |
|
3.5.1、 增加productId級別 在維度節(jié)點上右鍵增加級別,填寫相應(yīng)屬性值;級別對應(yīng)的表和列以及顯示列的值,是否為唯一成員。 |
|
3.5.2、 增加productTypeId級別 同樣步驟設(shè)置productTypeId級別; |
|
3.6、 添加度量 Measure 就是我們要計算的數(shù)值,操作的核心內(nèi)容。 3.6.1、 增加銷售數(shù)量度量 在cube上右鍵添加度量,輸入字段、數(shù)據(jù)類型及計算方式。 |
|
3.6.2、 增加總銷售額度量 銷售額是(unitPrice * number)表達(dá)式計算出來的,不能簡單設(shè)置某個列能實現(xiàn),需要在該度量上右鍵添加表達(dá)式,然后編輯表達(dá)式的值來實現(xiàn)。 |
|
表達(dá)式內(nèi)容如下: |
|
3.6.3、 添加計算成員類型度量 在cube上右鍵添加計算度量。默認(rèn)增加了公式,編輯公式內(nèi)容,同時也給計算成員添加了 |
|
編輯公式的內(nèi)容: |
|
3.7、 驗證xml結(jié)果 新建mdx query,載入對應(yīng)的schema文件,輸入mdx查詢語句,點擊執(zhí)行測試,沒有錯誤顯示結(jié)果,如下圖所示。 select {[Measures].saleNumber,[Measures].saleAmount,[Measures].avgPrice} oncolumns, {([dimProductType].[allProduct],[dimCustomer].[allCustomer])} onrows from[salesCube] |