上篇文章我們已經將Dim Geography維度設計好。
若要查看維度的成員, AS需要接收該維度的詳細信息(包括已創建的特性、成員屬性以及多級層次結構), 通過XMLA與AS的實例進行通信。
今天我們將維度部署到AS上進行查看。
文章提綱
-
補充背景知識
-
瀏覽維度,細化維度
-
總結
補充背景知識
XMLA是一種基於簡單對象訪問協議(SOAP)的XML應用程序編程接口的行業標准, 設計用於OLAP和數據挖掘。
XMLA規范定義了兩個函數,即Execute和Discover, 這兩個函數用於向主機實例發送操作及從主機實例檢索數據。
下面是一個使用XMLA發送到AS實例的Execute請求示例。
<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
<Command>
<Statement>
SELECT Measures.MEMBERS ON COLUMNS FROM [Adventure Works DW]
</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后瀏覽 可以看到變成了法語。
總結
我們需要掌握維度部署過程中錯誤的查找調試。
需要掌握常見的維度功能,如設置組合鍵,排序,優化特性等。
祝學習進步:)
相關系列文章列表:
- BI之SSAS完整實戰教程6 -- 設計維度、細化維度上:創建維度定義特性關系 @20160918
- BI之SSAS完整實戰教程5 -- 詳解多維數據集結構 @20160912
- BI之SSAS完整實戰教程4 -- 部署至SSAS進行簡單分析 @20160908
- BI之SSAS完整實戰教程3 -- 創建第一個多維數據集 @20160907
- BI之SSAS完整實戰教程2 -- 開發環境介紹及多維數據集數據源准備 @20160823
- BI之SSAS完整實戰教程1 -- 開篇, BI簡介 & SSAS簡介 @20160816
所有文章列表
首發博客園 by MiroYuan,轉載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。