SSAS 第一篇:多維資料分析基礎
多維資料分析是指按照多個維度(即多個角度)對資料進行觀察和分析,多維的分析操作是指通過對多維形式組織起來的資料進行切片 、切塊、聚合、鑽取 、旋轉等分析操作,以求剖析資料,使使用者能夠從多種維度、多個側面 、多種資料綜合度檢視資料,從而深入地瞭解包含在資料中的資訊和規律。
多維資料分析以資料倉庫為基礎,按照維度模型來設計資料倉庫。在維度模型中,把儲存度量的表稱作事實表,把儲存屬性的表叫做維度表。事實表儲存的是可概括的資料,維度中包含屬性和層次結構。使用者可以按照層次結構對資料進行聚合,從High Level上分析資料。
一,度量和度量值
度量(Measure)是事實表中一個數值型別的屬性,對數值進行聚合計算是有意義的,例如,學生的分數,計算學生的平均分數是有意義的。
度量值是指可概括的數值,是度量的值,度量值又被稱作事實(fact),這也是“事實表”名稱的由來。
從維度模型來看,事實表中除了維度的外來鍵列和主鍵列之外,其他的列都是度量,這些列的值是度量值。由此可以得出,事實表的構成是:主鍵列+維度外來鍵+度量。
事實表儲存資料的詳細程度稱作事實表的粒度,由於粒度是由事實表引用的外來鍵列確定的,因此一個事實表只能有一個粒度,不同粒度的事實資料必須分別儲存到不同的事實表中。
二,維度和層次結構
維度是分析資料的角度,維度和維度之間是相互獨立的。在報表中,增加維度只是建立了一個新的、獨立的細分度量值的方法。從資料分析的角度來講,增加維度是把度量值更細分,增加新的屬性來分解資料。
屬性是維度表的一列,主鍵屬性(Primary Key Attribution)唯一地確定了維度表中的其他屬性,屬性值是int型別;由於主鍵屬性不具有可讀性,通常為維度表建立一個名稱屬性(Name Attribution),是字元型別,用於說明主鍵屬性標識的實體。維度表的每一行都是不同的實體,但是其名稱屬性可能是相同的,例如,人名。由於主鍵屬性是int型別,值是唯一的,佔用的儲存空間小,因此大量應用於事實資料中,作為外來鍵列。
維度的作用是提供資料分析的角度,通常在不同的維度上對度量值做聚合計算,從High Level上來分析資料。在維度中,把可以用於聚合的屬性叫做分組屬性,或可聚合屬性(Aggregatable Attribution);把不可用於聚合的屬性叫做成員屬性(Member Attribution),成員屬性的作用是提供額外的資訊。
屬性的值稱作成員,例如,顏色屬性,其成員是Black,White,Red等,還有一個特殊的成員All,是指所有的成員。在做聚合運算時,ALL成員的意義是:group by子句中忽略該屬性。
維度的相關屬性之間具有包含關係,通過把相關的屬性新增到各個級別,可以建立層次結構。例如,2017年是2017年所有月份的上層級別,月份是其日期的上次級別,年,月,日構成了一個層次結構。在建立層次結構時,通常會在最底層新增一個ALL級別,ALL級別只包好一個成員:所有日期,是所有資料在日期的聚合。
在層次結構中,如果每一個子級成員都只有一個父級成員,那麼該層次結構是自然層次結構,從資料結構上來看,自然層次結構是一個樹形結構。在層次結構中,ALL級別也叫做根級成員,最底層的成員叫做葉級成員。
三,代理鍵和業務鍵
使用整數鍵值來代表維度成員是出於三個方面的考慮,第一個方面是減少事實表的大小,第二個方面是把名稱屬性重複的不同實體區分開來,第三個方面是簡化實體的標識,具體原因是:由於資料倉庫通過提取業務系統中的資料來構建,在不同的業務系統中,標識同一實體的主鍵(稱作業務鍵)可能是不同的,而不同實體的業務鍵可能是相同的,這就使得資料倉庫必須使用自己的唯一值來標識來自不同業務系統的實體,資料倉庫產生的,用於唯一標識一個實體的主鍵,也叫做代理鍵。
業務鍵的型別可以是整數,也可以是字元型別,但是代理鍵是整數型別,只有使用代理鍵,事實表中的外來鍵和維度表的主鍵才能真正被資料倉庫所控制。
四,多維資料集
OLAP(Onlie Analytical Processing)是聯機分析處理的簡稱,是一種把關係資料轉換為多維資料集的工具。不同的OLAP工具以不同的方式定義、儲存和管理多維資料集(Cube),Cube也稱作資料立方體。資料立方體表示由若干個維度所描述的一個數據集合,每個維度各自表示一個可對此資料集合進行觀察和分析的業務角度。
SSAS(SQL Server Analysis Service,簡稱分析服務)是一種實現OLAP功能的服務,它使用資料庫模式來儲存多維資料集。從理論上講,分析服務不是BI系統的必要組成部分,因為所有的資料都來自於關係型資料庫, 可以直接從資料庫提取資料給報表服務供客戶查詢。但是當資料足夠大時,從資料庫中查詢資料就會變的非常慢。
SSAS把資料從資料庫中提取出來,經過加工和處理之後,形成Cube,報表軟體就可以按照不同的屬性和維度來分析資料,不僅速度快,而且計算靈活。因此,SSAS的定位實際上是一個數據庫服務, 把在關係資料庫中加工過的資料倉庫或其他原始資料進行再次加工,作為報表使用的中間資料庫。
分析服務作為報表資料來源的優勢主要有三個:快速的響應,基於元資料的查詢和靈活的計算公式。
1,快速響應
一般來說,要麼在查詢時花更少的時間進行相關計算,要麼在查詢前就已經進行了相關的計算,而預先儲存已經計算好的數值,是實現快速響應的最好方法。
分析服務預先儲存計算好的資料值,這些數值不是最終的聚合值,而是中間級聚合,可以供多個查詢使用,以計算出最終的聚合值。
注意,在分析服務中建立資料聚合,與在關係型資料庫中建立聚合是相同,邏輯上都是先分組,再對每個分組進行聚合。由於聚合規則是關聯的,例如,均值實際上是彙總值和總數量的商,因此不必計算每個可能的聚合,可以通過建立中間聚合,這樣就可以使用較少的資料聚合滿足不同級別的聚合查詢需求。
2,基於元資料
元資料是指資料的資料,維度的元資料包括屬性和層次結構,屬性分為可聚合屬性和不可聚合屬性(又稱作成員屬性)。對於維度中的每個屬性,分析服務都會自動建立包含兩級的層次結構,頂層是單個All成員,它是該屬性所有成員的聚合,選擇屬性層次結構中的All成員,相當於忽略該屬性。
自存在(auto-exist)特性是指分析服務自動識別維度中確實存在的屬性成員的組合。
分析服務基於維度層次結構自動對度量值進行聚合,並把細節級資料和聚合資料組織成度量值組。
3,計算
自動對每個維度的層次結構進行聚合計算,建立計算成員,
五,度量值組
分析服務可以 把多個相關的度量值組和維度構造成多維資料集,那什麼是度量值組?
事實表中包含數值資料的列對應於維度模型中的度量值,因此,每個事實表都是一組度量值,分析服務使用一種稱作度量值組(Measure Group)的邏輯結構來組織資訊,度量值組對應於單個事實表及其相關的維度。
度量值組儲存的資料主要分為兩部分:
- 度量值組包含了代表每個維度的外來鍵列和每個度量值,也就是事實表中的資料,稱作細節資料;
- 度量值組包含了每個維度中的成員的可能組合所對應的聚合值,分析服務按照維度的層次結構對度量資料進行聚合,稱作聚合資料。
度量值組和事實表的差別在於:事實表只包含最低粒度級別的度量值,而度量值組不僅包含了事實表的資料,還包含了全部更高粒度的聚合資料。
如果維度資料倉庫中,只有一個事實表,那麼OLAP資料庫中只有一個度量值組。分析服務可以把若干個相關的度量值組和維度構造成多維資料集(Cube)。
參考文件:
大資料分析之多維資料分析