BI之SSAS完整實戰教程5 -- 詳解多維資料集結構

MiroYuan發表於2016-09-12

之前簡單介紹過多維資料集(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表示式稱為元組。

多個元組組成集。

這些概念都很重要,全是重點,每個都要掌握。

 

歡迎大家多多評論與支援。

祝學習進步,謝謝:)

 

相關文章列表:

 

 

 

首發部落格園 by MiroYuan,轉載文章之後必須在文章頁面明顯位置給出作者和原文連線,否則保留追究法律責任的權利。

 

相關文章