mysql构建数据立方体_OLAP数据建模工具Workbench的初步使用(数据立方体的建立)
OLAP數據建模工具Workbench的初步使用(數據立方體的建立)
概要:
1.workbench工具簡介
2.workbench簡單操作(附demo)
3.workbench初步使用總結
1.workbench工具簡介
OLAP,(Online Analytical Processing,聯機分析處理)。從事相關工作的小伙伴,具體的相關概念就不一一贅述,概念不懂,有古哥和度娘的柔懷。在這里,主要介紹一番在OLAP中,數據建模的工具workbench的使用。我們知道,要想進行OLAP,則需要建立數據立方體,來從多個維度來分析數據,從而得到相應的信息。關于數據立方體(Cube),其實就是一個XML文件,然后由ROLAP(relation-olap)服務器,如mondrian,或者輕量級OLAP分析引擎Saiku進行解析,最后將所需的信息以報表形式呈現。
所以,OLAP數據建模,即數據立方體的建立也就相當關鍵,直接影響結果的準確性。對于數據立方體,可以采用直接寫XML的形式寫出來。然而當數據立方體比較大,對應的XML會非常的大,內容也很多。對于維護以及查閱,造成一定的困難。所以這個時候,建議使用OLAP建模工具workbench來創建數據立方體。簡單來說,workbench就是一個建立數據立方體的圖形界面工具,由Java語言開發。通過workbench的圖形界面,建立數據立方體,然后該工具幫你自動生成對應的XML。當然,有些大大說不好用,的確有些地方用著不舒服,但是一個人一種習慣,自己順手就好啦。一句話:工具為了提升效率,別和自己過不去呀。
2.workbenchbench簡單操作
下面我們通過一個簡單的demo,來創建一個數據立方體,show一下工具的簡單使用。
相關參數:
a. 數據立方體:myCube
b. 所連數據庫:test
c. 關聯事實表:my_fact_table
d. 關聯維度表:my_dim_table
e. 所建維度:myDimension
f. 所建指標:myMeasure和myCM
注:涉及概念,古哥和度娘在等你。
1)連接數據庫
a.因為所建的這個數據立方體是關聯到一個數據庫中的數據,所以我們需要先連接一個庫。我所使用的是本地mysql數據庫。
如圖1.
b.如圖2,彈出如下界面,選擇“一般”-->連接類型選擇“MySQL”-->連接方式選擇“Native(JDBC)”-->填寫右側設置中的信息。
c.如圖3,點擊測試,測試是否可以連接成功。若OK,點擊確認,連接完成。
2)建立Schema
何謂Schema?簡單來說,就是描述一個邏輯模型到數據庫中物理模型的映射的。其實他就是數據庫中的一個命名空間,里面包含著諸如表、索引等對象。
a.如圖4.File-->new-->Schema
b.如圖5,填寫Schema相關信息。
·name:指該Schema名稱,我們命名為mySchema。
·description:該Schema相關的描述,可以為空
3)建立Cube
a.如圖6
b.如圖7,填寫Cube相關信息
·name:指該Cube名稱,我們命名為myCube
·description:該Cube的描述,可以為空,對外不可見
·caption:對外顯示的標題
4)Cube關聯事實表
a.如圖8
b.如圖9,選擇相關的事實表,我們選擇my_fact_table。
5)建立維度myDimension
a.如圖10
b.如圖11,填寫Dimension相關信息
·name:指該維度的名字,我們命名為myDimension
·description:該維度的描述,對外不可見,可以為空
·foreignKey:這是指維度表在事實表中的外鍵。如事實表my_fact_table與維度表my_dim_table通過字段user_id相關聯,即my_fact_table事實表中,user_id的字段內容是維度表my_dim_table中的主鍵。則user_id則是外鍵,所以將user_id填入此處,用來關聯兩個表。記住,此處填寫的是事實表中的字段,不是維度表中的。
·caption:對外顯示的標題
c.如圖12,填寫維度下層次的信息
·primaryKey:指的是維度表中的主鍵,此處需要關聯完維度表后選擇。
d.如圖13,14,為該維度關聯維度表
e.如圖15,16,建立維度的層級,并填寫相關信息
·name:層級的名詞,我們命名為myLevel
·table:此處填寫要關聯的維度表,但因為之前已經關聯,所以此處為空,不需要填寫。
·column:此處是和事實表關聯的字段
·nameColumn:此處是維度表中,將要顯示的字段,若為空,則默認顯示column處的字段內容,一般不填寫,而是把該內容寫到column中。
·type:要顯示列的數據類型,如nameColumn為空,則填column處字段的類型
·levelType:除了時間,其他類型都選擇Regular
·hideMemberIf:一般都選擇Never,即不管什么情況下,數據都不隱藏
·caption:對外顯示的名字
·visible:勾選,對外可見
f.別忘記了第c步中選擇主鍵哦
6)建立指標
6-1)建立正常指標
a.如圖17
b.如圖18,填寫相關信息
·name:指標名稱,我們命名為myMeasure
·aggregator:我們采用的聚合函數,可以通過下拉選擇,這里我們采用distinct-count,來計算一共有多少個user_id
·column:要應用函數的列,這里我們在下拉中選擇user_id
·formatString:結果顯示的形式,這里我們沒有選,可以選擇###.###,以三位一組來顯示。
·datatype:要顯示的結果是什么類型的,我們選擇Numeric,也可以選擇Integer,因為我們是計算user_id的數量
·caption:對外顯示的標題
·visible:勾選,對外可見
6-2)建立帶sql表達式的指標
如果我們要應用函數的列不是一整列,而是該列中符合我們篩選條件的一部分,該怎么辦呢?簡單,通過添加表達式來書寫篩選sql來得到我們要應用函數的那一列的部分。
a.如圖19
b.如圖20,我們要書寫篩選條件sql,采用sql的條件語句:
case when my_fact_table.id < 10 then my_fact_table.user_id else null end
意思是:如果事實表中的主鍵id小于10,那么我們將主鍵小于10的user_id來應用distinct-count函數,否則,該列為空。
小技巧:這里書寫完sql,如果你直接點擊左側的菜單欄,當你再次打開這個sql時,就發現,哎?怎么是空白的?我之前寫的sql呢?報警了啊!居然沒了!對,你沒有看錯,就是沒了。我也不知道為啥會這樣,估計是這工具的一個小bug,但是這種問題如何解決呢?簡單!只要點擊當前頁面的任意一個選項就可以啦,你看下面不是有個dialect嗎?鼠標雙擊它,然后再點擊菜單欄,問題就沒了,sql就保存了。我也是費了好大勁才發現,囧。
7)建立CM
CM是啥咧?Calculated Member,計算成員。但這又是啥?簡單來說,CM也是一種指標,只是不像6)中的指標,只有他提供的那幾個函數,在CM中,我們可以通過MDX多維表達式來自己定義一些自己想要的函數或者表達式,來完成我們對列的復雜操作。
如圖21
如圖22,填寫相關CM信息
·dimension:這里只選擇Measures,因為我們要借助指標來進行函數計算
·formula|formulaElement:這是我們自定義函數的表達式,這里需要用MDX語言,該語言是適用于OLAP的多維表達式,類似于sql,但有區別。我們在這里寫[Measures].[myMeasure] / 24,意為:我們用我們之前建立的指標myMeasure來除以24,假設我們之前的指標myMeasure表示一天的用戶數量,則這個CM所計算的結果代表平均每個小時的用戶量。
8)保存
點擊工具欄中的保存按鈕,將我們的Schema保存下來,以供后續使用,到此,數據模型我們已經建立完成,得到了相應的xml,如圖24。
3.workbench初步使用總結
1.workbench的功能不僅這一點,還有很多,這里只是初步給大家展示一下如何建立一個簡單的數據立方體。當然,深入學習還是靠自己,關于該工具,有提供的相關文檔mondrian_technical_guide.pdf,在軟件安裝包doc文件夾中,雖然是英文的,我想這不是問題哈。
2.很多人疑惑,建立完xml就完了?那么數據怎么展示?哈哈,當然沒有結束,不過那不是我們這篇文章所討論的啦,以后會給大家補上如何應用saiku引擎或者mondrian這種olap服務器來解析xml并展示出我們所需要的報表數據的。
3.再次聲明,這文章本身就是我這個小菜鳥寫的一篇給另一些不熟悉的小菜鳥看的。請各路大神大牛勿噴哦,我也是剛開始接觸olap,現在學識淺薄,只當做個積累,也拿出來和大家分享分享,若有哪里不對的地方,請多多指點,不勝感激。
4.最后,大家一起努力,共同進步!
總結
以上是生活随笔為你收集整理的mysql构建数据立方体_OLAP数据建模工具Workbench的初步使用(数据立方体的建立)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言注释与C++注释的相互转换
- 下一篇: c 调用mysql密码为空_C语言连My