Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 學習(4)創建多維鑽取分析

上一節時,我們創建了一個基於部門號的工資分類彙總。 這裏就引出了一個概念:維度

  專業的解釋大家自行百度,這裏就不班門弄斧了。從數據的使用角度看,維度可以簡單的理解成“數據分類彙總的一種依據”。

  按“部門號(DEPTNO)”對“工資(SAL)”進行分類彙總,“DEPTNO"就是一種維度;按“工作崗位(JOB)”對“工資”進行分類彙總,“JOB”就是另一種維度;

  維度之間也可以有層次關係,比如:我們先按“工作崗位” 彙總,然後每個相同工作崗位的員工,再按“部門”彙總。這種場景下:DeptNo就認爲是Job的子級維度。

  先按Job彙總數據,相同Job的,再按DeptNo做更詳細的數據彙總,這種逐層深入的數據分析過程,在BI層裏有一個專業術語:鑽取(Drill).

  下面就剛纔的場景(即:按JOB -> DEPTNO來層層對SAL進行分類彙總),來看看維度如何創建:

一、db表結構的創建

  通過上回的學習,大家應該有一個大概印象,每種數據分類的依據,我們應該創建一張小表來與之對應(比如按部門號彙總時,DEPT部門表就認爲是一張維度表)

  現在我們要通過JOB、DEPTNO 這二個有層級的維度對數據進行分析,所以:得有二張表。

  動手之前,插點題外話:通常對數據進行分析比較消耗db性能(特別是複雜的分析),所以一般真正的BI分析,都會事先把數據抽取到另一張表(甚至另一個專用於BI分析的庫),這樣分析時,不至於影響正常的生產系統使用。
這裏我不想對數據抽取展開討論(事實上,這一塊我還沒學會~_~),但是爲了體現這個思想,我們創建幾張以“BI_”爲前綴的新表來作爲BI分析的數據源。

  這樣就創建了二張小表BI_DIM_JOB、BI_DIM_DEPT以對應JOB、DEPT二個維度,但通常表還得有主鍵:

  加上主鍵後,我們再來看下主表EMP,既然JOB、DEPTNO都準備用單獨的小表記錄,主體表中就不再需要這些字段了,我們只是想對SAL進行分析,所以我們把EMP主表也做下處理:

  這樣就得到了一張新的(事實)主表,做爲BI的事實表數據源。

  哦,仔細看了一下:這張表裏沒有ENAME(員工姓名),乾脆,把EMPNO也當成一個維度,獨立出來吧:

  看到這裏,可能已經有人發現了一個重大的問題:主表BI_FACT_EMP與這些小表之間好象沒有任何數據上的關聯關係?

  看來,還少一張用於描述EMPNO與JOB、DEPTNO之間關係的表:

  好了,天下太平,主表BI_FACT_EMP 與 從表 BI_DIM_DRILL_EMP 通過EMPNO關聯,而 BI_DIM_DRILL_EMP 再進一步通過EMPNO、JOB、DEPTNO分別與BI_DIM_EMP、BI_DIM_JOB、BI_DIM_DEPT關聯,完全符合數據庫範式。

  光看上面的sql腳本,比較容易暈,爲了更直觀的說明各表的關係,這裏給一張關係圖:

二、創建RPD 模型及維度

2.1、 先用“BI管理”工具,聯機打開當前RPD,並把原來的對象全清空掉,再按前幾次學到的知識,把剛剛新創建的"BI_"打頭的表,全添加進來,弄好後,大概是下面這個樣子

注意圖中二個黃色的字段:SAL_SUM、EMPNO_COUNT,這是我手動新添加的二個聚合字段,SAL_SUM是對SAL的SUM聚合,而EMPNO_COUNT是對EMPNO的COUNT聚合,參見下圖:

 2.2、 在scott上右擊->新建對象-》邏輯維-》具有基於級別的層次的維

在彈出的界面中,輸入名稱:BI_EMP_DIMs

然後在BI_EMP_DIMs上右擊-》新建對象->邏輯級別

輸入EMPNO(即創建最底層的維度)

 然後把BI_DIM_DRILL_EMP下的EMPNO拖動到剛創建的維度EMPNO下,如下圖:

完成後,類似下圖:

在EMPNO維度上右擊-》新建對象-》父級別

 命名爲DEPTNO 

完成後,可以看到DEPTNO與EMPNO已經呈現出父子層次關係

同樣,把BI_DIM_DRILL_EMP中的DEPTNO拖動剛創建的維度DEPTNO上,如下圖:

在DEPTNO維度上,再繼續創建父級維度JOB

同樣把BI_DIM_DRILL_EMP上的JOB拖動到新創建的維度JOB上,最終的維度層次如下圖:

2.3、創建維度關鍵字:在JOB上右擊->新建邏輯級別關鍵字(如下圖)

保存默認,不作任何修改,直接點擊“確定”

類似的,在DEPTNO,EMPNO二個子級維度上,也創建關鍵字,然後點擊保存,最終的樣子如下圖:

注:保存成功後,每個維度下的字段前,會有一個類似“手*槍”的小圖標

2.4、把整個維度BI_EMP_DIMs拖動到【表示】層中的BI_FACT_EMP上,如下圖:

如果這時點擊保存,會彈出如下錯誤:

解決方法:在EMPNO上右擊-》屬性(如下圖)

點擊+號

在彈出的界面中,展開SCOTT下的BI_DIM_DRILL_EMP表,雙擊EMPNO(即設置BI_DIM_DRILL_EMP的EMPNO字段爲維度EMPNO的顯示列)

類似的,把BI_DIM_DRILL_EMP的DEPTNO設置成維度DEPTNO的顯示列,把BI_DIM_DRILL_EMP的JOB設置成維度JOB的顯示列,再次點擊保存,應該就能成功了。

模型和維度終於弄好了,已經成功80%,革命勝利在望!

三、創建鑽取分析

登錄,切換到管理菜單,點擊“重新加載文件和元數據”,以便讓剛纔修改過的RPD生效

創建一個分析,從左側的主題區域裏,可以看到剛纔創建的各種模型,我們選JOB和SAL_SUM、EMPNO_COUNT這三列,如下圖:

切換到結果標籤,如下圖,注意JOB列標題及該列數據,都以A鏈接的形式呈現,爲了方便以後修改,這裏我們先保存一下,文件命名爲SCOTT_EMP_DRILL,同時點擊工具欄的小圖標(如下圖),預覽下在儀表盤中的效果

這是儀表盤中的呈現效果,可以在JOB標題上點擊一下

這裏,BIEE會根據維度的層次關係,自動“下鑽”到下一個維度(即DEPTNO),如下圖:

DEPTNO維度下,還有最底層維度EMPNO,還可以繼續下鑽,如下圖(注意一下每次鑽取後,SAL_SUM、EMPNO_COUNT這二列的值會自動更新)

當然,維度不止這一種玩法,還可以直接把整個維度放到分析結果中,如下圖,如果雙擊BI_EMP_DIMs把整個維度加入所選列

爲了美觀,我們把列名“漢化”一下

把列標題改成“工資”,其它幾列也類似處理

現在看起來舒服多了

可以點擊分組數據前的+號展開,這樣就以另一種類似樹狀的方式進行鑽取了

最後,爲了讓分析結果看起來更fashion一點,給它加個動態圖表。不過做這個之前,有一個細節得先處理一下,“人數(EMPNO_COUNT)”是“個位數”級別的(<10),而“工資彙總(SAL_SUM)”是“千位數”級別的,如果二個條形柱顯示在同一張圖中,"人數"的柱狀圖高度幾乎接近於0,根本看不出來,所以有必要把“人數”的數值放大一些,以保持跟SAL_SUM接近(至少同一個數量級)

把人數放大1000位以後,結果看上去還比較滿意

下面是鑽取過程中,圖表動態變化的幾張截圖:

下鑽到DEPTNO維度時的截圖

下鑽到最底層EMPNO時的截圖

截了近一天的圖,總算寫完了,希望對於正在學習oracle BIEE的朋友們有所幫助

作者:菩提樹下的楊過
出處:http://yjmyzz.cnblogs.com 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
發佈了8 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章