之前簡單介紹過多維資料集(Cube)的結構。
原來計劃將Cube結構這部分內容打散,在實驗中穿插講解, 考慮到結構之間不同的部分都有聯絡,如果打散了將反而不好理解,還是直接一次性全部講完。
本篇我們將詳解Cube結構, 介紹Cube結構的每個部分,讓大家對Cube結構能有總體的把握。
由於多維資料集的結構和MDX有很強的聯絡, 因此會有部分內容涉及到MDX,大家只要大概能看懂就行了,後續會有專門的MDX 專題。
文章提綱
-
概述
-
度量值和度量值組
-
維度
-
總結
概述
SQL Server Analysis Services中的多維資料庫包含一個或多個多維資料集。
下面我們對多維資料集 (Cube) 的結構進行詳解。
前面文章講過:
Cube組成 = 一個或多個度量值組 + 一個或多個維度
我們分別來講述這兩個部分。
度量值和度量值組
度量值主要指我們需要分析的,可以量化的數值型別的資料, 如銷售額, 費用等。
度量值組是由相關度量值組成的集合,每個度量值只能屬於一個度量值組。
度量值組主要用於導航目的,以提高可讀性或更易於在客戶端工具中使用。
我們不會在MDX查詢中直接使用度量值組來查詢度量值,但是某些MDX函式中可以使用度量值組。
維度
維度就是我們的觀察角度。
例如:
時間維度由年、季度、月、周和天構成
地區維度下有國家、大區、省、市構成
層次結構和層次結構級別
維度具有一個或多個層次結構,並且每個層次結構包含一個或多個級別。
如下圖。
成員
每個層次結構都包含一個或多個項,這些項被稱為成員,而每個成員對應於基礎維度表中的一個或多個引用值例項。
以日期維度為例,層次結構(例如 年-月)對應的成員
Year -- 例如 CY2005, CY 2006
Semester -- 例如 H1 CY 2005, H2 CY 2005
Quarter -- 例如 Q1 CY 2005, Q2 CY 2005
Month -- 例如 January 2005, February 2005
下圖是一個具體示例:
維度 -- 層次結構(包含多個級別的) -- 具體成員 示意圖
MDX如何表示某個特定成員?
在MDX中,某一層次結構的每個特定成員都通過唯一名稱進行標識。
可以通過包含維度名稱、層次結構名稱以及級別名稱的名稱路徑(使用該成員的名稱)來訪問某一維度中的某個成員,也可以通過鍵路徑(使用該成員的鍵)進行訪問。
例如,Calendar層次結構中的成員Q1 CY 2006可以表示為以下形式:
[Date].[Calendar].[Calendar Quarter].[Q1 CY 2006]
如果名稱中包含空格、數字或者屬於MDX的關鍵字,請使用方括號將該名稱括起來。
另外一種鍵路徑的格式,路徑中成員的鍵表示為&[成員名稱]
例如:
[Date].[Calendar].[Calendar Quarter].&[2006]&[1]
一般情況下,我們用第一種方式:
格式:[維度名稱].[層次結構名稱].[級別名稱].[成員名稱]
單元
拿之前那個圖來說明。如下圖顯示了一個多維資料集的3個面。
其中,正面被劃分成16個正方形,每個正方形都帶有一個數字。
假定每個正方形中的數字是度量值[Internet Sales Amount],如果檢視該正方形所在的小立方體(也是個多維資料集)的其他面,其他面的值也是一樣。
這個較小的多維資料集被稱為一個單元。
各個單元儲存多維資料集中所有度量值對應的資料值。如果某個單元中未提供度量值的資料值,則表示對應的度量值為空。
如要查詢圖中灰色背景的部分值,MDX查詢需要唯一標識包含這個值的單元。該MDX查詢如下:
SELECT Measures.[Internet Sales Amount] ON COLUMNS
FROM [Adventure Works]
WHERE ([Date].[Calendar].[Calendar Quarter].&[2011]&[2],
[Product].[Product Line].[Mountain],
[Customer].[Country].[Australia])
在該查詢中可以看到, 是基於查詢的WHERE子句中的特定條件(該條件可唯一的標識相應的單元)從Adventure Works多維資料集中選擇Measures.[Internet Sales Amount]值。
元組
唯一標識多維資料集的一個單元或一部分的MDX表示式稱為元組。
元組通過每個維度中的一個成員表示,使用逗號進行分隔,並且用括號括起來。
元組並不必須包含所有維度中的成員。下面是一些基於Adventure Works的元組示例。
([Customer].[Country].[Australia])
([Date].[Calendar].[2011].[H1 CY 2011].[Q1 CY 2011],
[Customer].[Country].[Australia])
([Date].[Calendar].[2011].[H1 CY 2011].[Q1 CY 2011],
[Product].[ProductLine].[Mountain], [Customer].[Country].[Australia])
通過一個元組表示的一個多維資料集部分稱為一個切片。
通過一個成員表示的元組稱為簡單元組,可以不使用括號。
集
一組元組構成一種新的物件,稱為集。
這組元組是使用型別和數量上均完全相同的一組維度定義的。在MDX查詢和表示式中經常會用到集。
格式:
{(Customer.Country.Australia), (Customer.Country.Canada)}
集可以為空 {}
集可以包含重複的元組
如果查詢中僅指定了一個元組,那麼可以不用花括號,查詢時會隱式轉換成集。
一般情況下,我們建議在編寫MDX查詢時儘量使用括號和花括號,因為這樣可以確保MDX查詢中指定的元組和集正確無誤。
總結
本篇需要理解掌握Cube的各個部分,與Cube結構相關的名詞主要有:
量值,量值組,維度,層次結構,層次結構級別,成員,單元,元組,集
相關的名詞我都用粗體標出,所有都必須掌握。
大家理解時可以找出其中的聯絡,通過聯絡來幫助理解,總結如下:
Cube由量值組和維度組成。
量值組成量值組。
維度具有層次結構,層次結構包含一個或多個級別。
每個層次結構包括一個或多個項(成員)。
標識Cube的一個單元或一部分的MDX表示式稱為元組。
多個元組組成集。
這些概念都很重要,全是重點,每個都要掌握。
歡迎大家多多評論與支援。
祝學習進步,謝謝:)
相關文章列表:
- BI之SSAS完整實戰教程4 -- 部署至SSAS進行簡單分析 @20160908
- BI之SSAS完整實戰教程3 -- 建立第一個多維資料集 @20160907
- BI之SSAS完整實戰教程2 -- 開發環境介紹及多維資料集資料來源準備 @20160823
- BI之SSAS完整實戰教程1 -- 開篇, BI簡介 & SSAS簡介 @20160816
首發部落格園 by MiroYuan,轉載文章之後必須在文章頁面明顯位置給出作者和原文連線,否則保留追究法律責任的權利。