//
數據立方體與OLAP - iamlihongwei的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/iamlihongwei/article/details/53172887
//
數據立方體與OLAP | 網站數據分析
http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/
//OLAP概念
OLAP(On-line Analytical Processing,聯機分析處理)是在基于數據倉庫多維模型的基礎上實現的面向分析的各類操作的集合。
//數據立方體(Cube)
多維模型的定義和結構,以及事實表(Fact Table)和維表(Dimension Table)的概念
多維數據模型作為一種新的邏輯模型賦予了數據新的組織和存儲形式,而真正體現其在分析上的優勢還需要基于模型的有效的操作和處理,也就是OLAP(On-line Analytical Processing,聯機分析處理)。
//OLAP的基本操作
OLAP的多維分析操作包括:鉆取(Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot)
OLAP的優勢是基于數據倉庫面向主題、集成的、保留歷史及不可變更的數據存儲,以及多維模型多視角多層次的數據組織形式,如果脫離的這兩點,OLAP將不復存在,也就沒有優勢可言。
是不是覺得其實OLAP并沒有想象中的那么復雜,一旦多維數據模型建成后,在上面做OLAP其實是一件很cool的事情。
前面的一篇文章——數據倉庫的多維數據模型中已經簡單介紹過多維模型的定義和結構,以及事實表(Fact Table)和維表(Dimension Table)的概念。多維數據模型作為一種新的邏輯模型賦予了數據新的組織和存儲形式,而真正體現其在分析上的優勢還需要基于模型的有效的操作和處理,也就是OLAP(On-line Analytical Processing,聯機分析處理)。
數據立方體
關于數據立方體(Data Cube),這里必須注意的是數據立方體只是多維模型的一個形象的說法。立方體其本身只有三維,但多維模型不僅限于三維模型,可以組合更多的維度,但一方面是出于更方便地解釋和描述,同時也是給思維成像和想象的空間;另一方面是為了與傳統關系型數據庫的二維表區別開來,于是就有了數據立方體的叫法。所以本文中也是引用立方體,也就是把多維模型以三維的方式為代表進行展現和描述,其實上Google圖片搜索“OLAP”會有一大堆的數據立方體圖片,這里我自己畫了一個:
OLAP
OLAP(On-line Analytical Processing,聯機分析處理)是在基于數據倉庫多維模型的基礎上實現的面向分析的各類操作的集合。可以比較下其與傳統的OLTP(On-line Transaction Processing,聯機事務處理)的區別來看一下它的特點:
OLAP與OLTP
數據處理類型
OLTP
OLAP
面向對象
業務開發人員
分析決策人員
功能實現
日常事務處理
面向分析決策
數據模型
關系模型
多維模型
數據量
幾條或幾十條記錄
百萬千萬條記錄
操作類型
查詢、插入、更新、刪除
查詢為主
OLAP的類型
首先要聲明的是這里介紹的有關多維數據模型和OLAP的內容基本都是基于ROLAP,因為其他幾種類型極少接觸,而且相關的資料也不多。
MOLAP(Multidimensional)
即基于多維數組的存儲模型,也是最原始的OLAP,但需要對數據進行預處理才能形成多維結構。
ROLAP(Relational)
比較常見的OLAP類型,這里介紹和討論的也基本都是ROLAP類型,可以從多維數據模型的那篇文章的圖中看到,其實ROLAP是完全基于關系模型進行存放的,只是它根據分析的需要對模型的結構和組織形式進行的優化,更利于OLAP。
HOLAP(Hybrid)
介于MOLAP和ROLAP的類型,我的理解是細節的數據以ROLAP的形式存放,更加方便靈活,而高度聚合的數據以MOLAP的形式展現,更適合于高效的分析處理。
另外還有WOLAP(Web-based OLAP)、DOLAP(Desktop OLAP)、RTOLAP(Real-Time OLAP),具體可以參開維基百科上的解釋——OLAP。
OLAP的基本操作
我們已經知道OLAP的操作是以查詢——也就是數據庫的SELECT操作為主,但是查詢可以很復雜,比如基于關系數據庫的查詢可以多表關聯,可以使用COUNT、SUM、AVG等聚合函數。OLAP正是基于多維模型定義了一些常見的面向分析的操作類型是這些操作顯得更加直觀。
OLAP的多維分析操作包括:鉆取(Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot),下面還是以上面的數據立方體為例來逐一解釋下:
鉆取(Drill-down):在維的不同層次間的變化,從上層降到下一層,或者說是將匯總數據拆分到更細節的數據,比如通過對2010年第二季度的總銷售數據進行鉆取來查看2010年第二季度4、5、6每個月的消費數據,如上圖;當然也可以鉆取浙江省來查看杭州市、寧波市、溫州市……這些城市的銷售數據。
上卷(Roll-up):鉆取的逆操作,即從細粒度數據向高層的聚合,如將江蘇省、上海市和浙江省的銷售數據進行匯總來查看江浙滬地區的銷售數據,如上圖。
切片(Slice):選擇維中特定的值進行分析,比如只選擇電子產品的銷售數據,或者2010年第二季度的數據。
切塊(Dice):選擇維中特定區間的數據或者某批特定值進行分析,比如選擇2010年第一季度到2010年第二季度的銷售數據,或者是電子產品和日用品的銷售數據。
旋轉(Pivot):即維的位置的互換,就像是二維表的行列轉換,如圖中通過旋轉實現產品維和地域維的互換。
OLAP的優勢
首先必須說的是,OLAP的優勢是基于數據倉庫面向主題、集成的、保留歷史及不可變更的數據存儲,以及多維模型多視角多層次的數據組織形式,如果脫離的這兩點,OLAP將不復存在,也就沒有優勢可言。
數據展現方式
基于多維模型的數據組織讓數據的展示更加直觀,它就像是我們平常看待各種事物的方式,可以從多個角度多個層面去發現事物的不同特性,而OLAP正是將這種尋常的思維模型應用到了數據分析上。
查詢效率
多維模型的建立是基于對OLAP操作的優化基礎上的,比如基于各個維的索引、對于一些常用查詢所建的視圖等,這些優化使得對百萬千萬甚至上億數量級的運算變得得心應手。
分析的靈活性
我們知道多維數據模型可以從不同的角度和層面來觀察數據,同時可以用上面介紹的各類OLAP操作對數據進行聚合、細分和選取,這樣提高了分析的靈活性,可以從不同角度不同層面對數據進行細分和匯總,滿足不同分析的需求。
是不是覺得其實OLAP并沒有想象中的那么復雜,一旦多維數據模型建成后,在上面做OLAP其實是一件很cool的事情。
本文轉載自:http://webdataanalysis.net/文章:數據立方體與OLAP