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)。

 

 

參考文檔:

大數據分析之多維數據分析入門

Tags: