BI之SSAS完整實戰教程7 -- 設計維度、細化維度中 :瀏覽維度,細化維度

上篇文章咱們已經將Dim Geography維度設計好。 html

若要查看維度的成員, AS須要接收該維度的詳細信息(包括已建立的特性、成員屬性以及多級層次結構), 經過XMLA與AS的實例進行通訊。 數據庫

今天咱們將維度部署到AS上進行查看。 編程

文章提綱

  • 補充背景知識
  • 瀏覽維度,細化維度
  • 總結

補充背景知識

XMLA是一種基於簡單對象訪問協議(SOAP)的XML應用程序編程接口的行業標準, 設計用於OLAP和數據挖掘。 服務器

XMLA規範定義了兩個函數,即Execute和Discover, 這兩個函數用於向主機實例發送操做及從主機實例檢索數據。 app

下面是一個使用XMLA發送到AS實例的Execute請求示例。 函數

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> 學習

    <Command> 測試

    <Statement> 優化

        SELECT Measures.MEMBERS ON COLUMNS FROM [Adventure Works DW] this

    </Statement>

</Command>

<Properties>

    <PropertyList>

        <Catalog>

ASMultidimensionalPOC

</Catalog>

<Format>Multidimensional</Format>

<AxisFormat>ClusterFormat</AxisFormat>

    </PropertyList>

</Properties>

</Execute>

上面的XMLA中發送了一個請求, 執行在Statement命令中指定的MDX查詢。與AS Server進行通訊的一些常見命令包括Create、Alter、Process和Statement.

AS 對象的定義經過DDL(Data Definition Language, 數據定義語言)來實現。

其餘命令處理已經定義的數據,稱爲DML(Data Manipulation Language, 數據操做語言)命令。

當項目部署到AS服務器時,會發送一些XMLA請求,以下所述:

1. 從AS請求一個數據庫列表以肯定當前項目所定義的數據庫是否已在該實例中存在, 指定的項目名稱將被用做數據庫名稱。

SSDT將針對數據庫發送Create或Alter命令,具體取決於該數據庫是否已存在於服務器上。

2.隨後, SSDT將發送一個XMLA請求,以處理你建立和/或修改的對象。

SSDT將執行驗證,以確保維度設計正確無誤。

瀏覽維度,細化維度

如今咱們來將維度部署到AS上來查看維度的內容:

右擊項目Deploy,SSDT嘗試將該項目部署到AS實例。

能夠看到,部署失敗。

SSDT將使用Error List窗口報告由SSDT從AS實例識別出的全部警告和錯誤。

上圖中顯示的前15個警告是提醒違反最佳實踐的狀況,通常按照必要性進行排序。這些錯誤是能夠忽略的(右鍵選Dismiss, 相似於Word忽略拼寫錯誤)

另一種是AS實例報告的警告,這種是不能解除的。

如右擊第16個警告,能夠發現Dismiss是灰色禁用狀態。

第16條警告指出,在處理City特性時,識別出重複的特性鍵值,代表具備多個使用相同名稱的城市,但沒法肯定哪一個State Province Name與某個特定的城市具備關係。例若有多個Augsburg

因爲該錯誤,AS實例沒法處理City特性,隨後也就沒法處理Dim Geography維度,最終致使部署失敗。

若要更正上述問題,須要確保每一個城市都是惟一的。

咱們使用組合鍵的方式(City+State Province Code)來惟一標識一個City特性。

設置組合鍵

1. 在維度設計器中打開Dim Geography維度,而後在Attributes窗格中選擇City特性

2. 在Properties窗格中,找到KeyColumns屬性,而後單擊省略號

在跳出的對話框中,將StateProvinceCode添加到Key Columns列表中。

3. 設置NameColumn

默認狀況下,使用列名稱做爲特性的鍵列。

AS實例會自動將同一列推斷爲NameColumn(用於顯示特性的成員名稱的列)。只要定義一個組合鍵,就須要爲特性定義一個名稱列,由於SSDT和AS實例不知道應該使用組合鍵的哪一個列做爲特性的名稱列。

在KeyColumns下面能夠看到NameColumn屬性,單擊省略號,選擇City做爲Name Column.

再次Deploy, 能夠發現仍是有問題:

Warning    16    OLAP 存儲引擎中存在錯誤: 處理時找到重複的屬性鍵: 表:"dbo_DimGeography",列:"PostalCode",值:"12171"。該屬性爲"Postal Code"。        

 

根據錯誤提示,咱們再次確認數據,發現Postal也有重複。

相似剛纔City特性所執行的操做同樣,也須要Postal Code特性成員具備惟一性。

1. 選擇Postal Code特性,

2. 在Properties窗格中,找到KeyColumns屬性,而後單擊省略號, 包含數據源中的StateProvinceCode、City和Postal Code列。

3.設置NameColumn爲PostalCode

再次Deploy就成功了。

瀏覽維度

切換到Browser選項卡來瀏覽Dim Geography維度的數據。

默認選中的Hierarchy就是Geography, 隨便展開一些level來看

咱們來作幾個修改,使得UI更加友好。

將Geography層次結構的All級別名稱更改成All Countries

咱們回到維度設計器Dimension Structure

在Hierarchies窗格中選擇Geography層次結構

按F4切換到Properties窗口,第一個屬性是AllMemberName, 默認不顯示任何值,填入All Countries

再次部署項目,再次切換到Browser頁面,點擊Reconnect菜單。

能夠看到All已經變成All Countries了。

對某個級別的成員進行排序

某個級別的成員就是構成該級別的特性的成員。

如Geography層次結構中Country級別的成員實際上就是特性English Country Region Name的成員。(前面咱們重命名過English Country Region Name,改爲了Country)

咱們就以這個Country爲例,使用名稱列來顯示特性名稱,使用鍵列來進行排序。

維度中每一個特性都有如下兩個屬性:KeyColumns和NameColumn, 其中,KeyColumns屬性用於指定對成員進行排序所用的列,而NameColumn屬性用於保存成員的描述性名稱。

默認狀況下,維度嚮導和維度設計器會在向維度中添加添加特性時設置KeyColumns屬性,但不會設置NameColumn屬性。

若是NameColumn屬性爲空,AS將返回KeyColumns值做爲成員的描述性名稱,以響應客戶端請求。

按F4切換到Country的屬性,默認是以下設置

咱們將KeyColumns改爲Country Region Code, 將NameColumn改爲原來的KeyColumns中的值。

再確認下Properties窗口的Advanced部分中, 確保OrderBy屬性的值爲Key

再次部署項目,再次切換到Browser頁面,點擊Reconnect菜單。

優化特性

在設計維度中,若是維度過多,看起來會很亂,咱們能夠經過兩個特性屬性來操縱特性對最終用戶的可見性。

選中相應屬性,直接看下屬性窗口的說明就能夠區別開來:

AttributeHierarchyEnabled

Indicates whether an atrribute hierarchy is enabled for this attribute. If the attribute hierarchy is not enabled, then the attribute cannot be used in a user-defined hierarchy.

AttributeHierarchyVisible

Indicates whether the attribute hierarchy is visible to client applications.

Even if the attribute hierarchy is not visible, it can still be used in a user-defined hierarchy and referenced in Multidimensional Expressions(MDX).

 

咱們簡單測試下:

將English Country Region Name 的AttributeHierarchyEnabled設爲False, 能夠看到Deploy會報錯。(由於咱們在用戶層次結構中使用了它)。

將French Country Region Name的AttributeHierarchyEnabled設爲False, Deploy後能夠發現,Browser選項卡中已經沒有這一項了。

在維度中定義翻譯

最後再看下Tanslations選項卡。

咱們利用以前的French Country Region Name,建立法語翻譯

1. 切換到Translations頁面,New Translation,選擇French(France)

2. 在新添加的列中單擊English Country Region Name右邊的單元格按鈕,在彈出對話框中選擇FrenchCountryRegionName列。

3. 從新Deploy後瀏覽 能夠看到變成了法語。

總結

咱們須要掌握維度部署過程當中錯誤的查找調試。

須要掌握常見的維度功能,如設置組合鍵,排序,優化特性等。

 

祝學習進步:)

 

相關係列文章列表:

 

全部文章列表
首發博客園 by MiroYuan,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索