數據倉庫原理<4>:聯機分析處理(OLAP)



1. 引言

本篇主要介紹數據倉庫中的一項重要分析技術——聯系分析處理(OLAP)。
第一篇筆者介紹到數據處理主要有兩種,操作型數據處理和分析型數據處理,前者可以稱為OLTP,后者可以稱為OLAP。本篇將具體介紹什么是OLAP?它與OLTP的區別是什么?多維數據模型和多維分析操作是OLAP中的兩種核心技術,也會予以說明。

2. OLAP定義

聯機分析處理(Online Analysis Process,OLAP)的定義有以下幾種:
OLAP委員會的定義:“OLAP是使分析人員、管理人員或者執行人員能夠從多種角度對從原始數據中轉化出來的、能夠真正為用戶所理解的,並真實反映企業多維特性的信息進行快速、一致、交互的存取,從而獲得對數據的更深入了解的一類軟件技術。”
文獻[2]的定義:“OLAP是以海量數據為基礎的復雜分析技術,支持各級管理決策人員從不同的角度,快速靈活地對數據倉庫中的數據進行復雜查詢和多維分析處理,並且能以直觀易懂的形式將查詢和分析結果提供給決策人員,從而輔助各級管理人員作出正確決策。”
我的理解是:“OLAP是一種對數據倉庫中的數據進行復雜的查詢和計算操作,讓用戶能夠從多個角度、快速有效的獲取信息的分析技術。”

總結:以上定義都表明了OLAP的關鍵詞是:
“海量數據”、“復雜查詢計算”、“多維分析”、“快速靈活”、“支持決策”
這也就是OLAP的特點。


## 3. OLAP與OLTP的區別 OLAP和OLTP是兩類不同的應用,OLTP是對數據庫中數據的聯機查詢和增刪改操作,它以數據庫為基礎;而OLAP適合以數據倉庫為基礎的數據分析處理。 OLAP中歷史的、導出的及經綜合提煉的數據主要來自於OLTP所依賴的底層數據庫,OLAP數據較OLTP數據需要多一步綜合處理或多維化的操作。 OLAP數據和OLTP數據的區別如下表: ![OLAP數據和OLTP數據](http://images.cnblogs.com/cnblogs_com/hbsygfz/726837/o_20150826114710.png) 可以看出OLAP和OLTP在處理的數據的特征、面向的用戶均有所不同。
## 4. 多維數據模型的基本概念 **(1)定義:** 多維數據模型是OLAP中的一項核心技術。 **多維數據模型**是數據分析時用戶的數據視圖,是面向分析的數據模型,用於給分析人員提供多種觀察的視角和面向分析的操作。 多維數據模型的數據結構可以用**多維數組**來表示,如:`(維度1,維度2,……,維度n;度量1,度量2,……,度量m)`。 多維數據模型也可以使用**多維立方體**(`data cube`)直觀展現,其中**維**表示用戶的觀察角度,多維空間中的**點**表示度量的值。 ![數據立方體](http://images.cnblogs.com/cnblogs_com/hbsygfz/726837/o_555.png) **(2)常用術語:** **① 維(dimension):**維是人們 觀察事物的特定角度,是事物的某個屬性,比如時間、地點、產品。每個維都有唯一的名稱,比如時間維、地區維、產品維。 **② 維成員(member):**維成員就是維的取值。如果一個維是多個層次的,那么維成員就是不同**維層次**上的取值的組合。比如地區維,維成員就可以是“北京”、“上海”、“杭州”等;而日期維包括年、月、日三個層次,那么它的維成員就是“2008年8月8日”,但並不是每個層次上都一定要有取值,比如“2008年8月”也可以是維成員。 **③ 維層(level):**維是觀察事物的角度,維層就是這個角度的細節程度,不同的細節程度對應着不同的維層。比如日期維,可以從“年”這一細節程度去觀察,也可以從“季度”、“月份”去觀察,因此年、季度、月份等就是日期維的不同維層。層之間有一定的層次級別。 **④ 維層次(hierarchy):**維層次是維層的不同划分。比如日期維可以按照“年-季度-月”划分,也可以按照“年-星期-日”划分。兩種划分就是日期維的兩個維層次。再比如產品維,可以按照產品、類型、種類划分,也可以按照制造商、代理商、承銷商來划分。 **⑤ 維屬性(attribute):**維屬性就是維成員所具有的特征,維屬性可以在每個維成員上定義,也可以在維層上定義。如果在維層上定義,那么該維層上的所有維成員都有這些屬性。比如產品維的某一個成員“洗衣機”,它有一個“洗滌重量”的屬性,這就是維屬性。 **⑥ 度量(measure):**度量就是要分析的目標或對象。常見的度量值有銷售量、供應量、利潤等。度量一般有名稱、數據類型、單位、計算公式等屬性。度量還可以分為可累計型和不可累計型。 **⑦ 數據方體(cube):**多維數據模型的空間展現就是數據方體,也稱為多維立方體。一個數據方體由多個**維**和**度量**組成。n維立方體可以看做由一系列的n-1維立方體組成。 **⑧ 數據單元(cell):**在一個數據立方體中,當每一個維上都確定一個維成員,那么就可以唯一確定多維空間中的一個點,這個點就稱為數據單元。一個數據單元可以有多個度量值,比如一個三維立方體,有三個維度:日期維、地區維、產品維,那么“2008年8月8日”、“北京”、“冰箱”,就可以確定一個數據單元,這個數據單元上的度量值可以是利潤、銷售額、銷售數量等。

5. 常用的多維數據模型

常見的多維數據模型有星型模型、雪花模型、事實群模型
(1)星型模型:
星型模型是多維數據模型的基本結構,通常是由位於中心的一張表和其周圍的多張表組成。中心的表叫做事實表,周圍的表叫做維度表事實表fact表)用來存儲事實的度量值和各種維度表的主碼值。維度表dimension表)用來保存維的信息,即每個維成員的屬性信息和層次信息。事實表通過維度表的主碼與各維度表相連接。
星型模型不支持維的層結構。每個維只有一個維表。如果一個維度有多個維層,那么所有的維層屬性都必須放在這一個維表里面。因此就會因為沒有規范化而產生了一定的冗余
星型模型
(2)雪花模型:
雪花模型是在星型模型的基礎上發展而來,每一個維度不再只有一張維度表,而是可以有多張維度表。雪花模型和星型模型的主要區別在於雪花模型會根據維層對維度表進行規范化。經過規范化的維表不僅易於存儲而且能節省空間,但是在查詢時就需要比較多的連接操作。因此我們在處理時,可以將星型模型和雪花模型進行綜合,對於較小的維度表仍然使用星型模型的不規范形式,對於較大的維度表則使用雪花模型的規范化形式。
雪花模型
(3)事實群模型:
事實群模型類似於星型模型,區別只是多張事實表之間可以共享同一張維度表。
事實群模型

6. 常用的多維分析操作

(1)多維分析基礎——聚集函數
聚集就是對細節數據進行綜合的過程。
最常用的五種聚集函數:求和(sum)、計數(count)、最大值(max)、最小值(min)、平均值(average),還有求中間值(median)、排序(rank)。
(2)切片:slice
就是在數據方體的某一維上選定一個維成員的動作,即限定多維數組某一個維度只取一個特定的值。
比如地區維,選定“北京”這一個維成員,這樣就得到一個切片。
(3)切塊:dice
就是在數據方體的某一維上選定某個區間的全部維成員的動作,即限定多維數組某一個維度只取一定區間的值。
比如地區維,選定“北京”、“上海”、“杭州”,這樣就得到一個切塊。當這一個區間只有一個維成員時,就得到一個切片。因此切塊可以由多個切片操作疊合而成。
(4)旋轉:rotate
改變數據方體維的次序的動作稱為旋轉。旋轉操作對數據不做任何改變,只是改變立方體擺放的視角。
(5)下鑽:drill down
下鑽操作就是在某個分析的過程中,用戶可能需要從更多的維或者某個維的更細層次上觀察數據,這時候就需要通過下鑽操作來實現。比如將日期維從季度層次下鑽到月份層次。下鑽前用戶只能看到季度數據,而下鑽后就可以看到月份數據。
下鑽操作主要有兩種類型一是在現有的維下鑽取更細節一層的數據。比如日期維上的季度數據下鑽到月份數據。二是增加更多的維,比如現在只分析了三個維度的數據,但是問題仍然無法解決,這時候就需要更多維的數據。
(6)上卷:roll up
上卷操作是相對下鑽操作而言的,下鑽可以看到更多更細節的數據,因此上卷操作就是看到更少更綜合的數據。因此,上卷操作也分為兩種一種是上卷到更高層次的數據;另一種是減少維度。

7. 參考文獻

[1] 數據倉庫(原書第4版),William H.Inmon著,王志海等譯,機械工業出版社,2006.8
[2] 數據倉庫與數據分析教程,王珊等編著,高等教育出版社,2012.8




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM