使用分析服務多維模式建立簡單的分析模型


多維數據集是一種特殊的數據庫,按照默認的模式(MOLAP),它把數據倉庫里事實表和維度表的數據經過聚合存儲在另外一套獨立的文件系統中。經過聚合的數據在統計性能上會得到提升,並且可以讓用戶通過很簡單的前端工具,比如Excel來生成很簡單的報表。

這里將介紹如何制作一個簡單的多維數據集。

此篇使用的版本是SQL Server 2012,對應的Visual Studio Shell是2010,名稱也改為SQL Data Tools。

 

首先,打開SQL Data Tools,點擊File->New->Project…

接下來會打開新建項目窗口。這個界面可能對於很多c#開發人員再數據不過,這里可以告訴你,SQL Server BI下很多項目都是在這下面建立的,比如,數據集成項目,它主要負責BI項目中的ETL過程(數據的清洗轉換和加載),還有報表服務項目,很多BI項目的報表都是通過這個項目模版實現的。自從微軟.net戰略之后,很多開發基本都是在Visual Studio進行的。這里就是一個具體的體現。

在左面項目模版中選擇Analysis Services,然后選擇Analysis Services Multidimensional and Data Mining Project。

在這里我們可以看到在最新的版本中還提供了另外一種分析服務項目模版,就是Analysis Services Tabular Project,關於這個新特性,可以參考我的另外一篇隨筆:

使用SQL Server Analysis Services Tabular Model建立分析模型

Tabular Model的最終產出結果跟多維數據集差不多,只不過它更面向於業務人員和開發人員之間的用戶,而本文提及的多維數據集是定位在開發人員之上的。

另外,留意一下項目類型的Data Mining,意思就是在這個項目下,也可以建立數據挖掘項目,關於如何玩轉這個功能,請參考我的另外一篇隨筆:

使用SQL Server Analysis Services數據挖掘的關聯規則實現商品推薦功能

接下來,我們看一下項目的結構:

可以看到項目包含幾個文件夾。

第一個是數據源,這里定義SSAS數據庫要連接的是哪個數據源,通常來說就是數據倉庫所在的位置。

第二個是數據源視圖,里面定義了多維數據集需要的各種表,事實表和維度表。

Cubes里面定義數據立方體,也就是我們所說的多維數據集。

Dimensions文件夾里定義了維度,這里可以理解為維度的一個抽象,比如時間維度,在具體的一個立方體里可能對應的就是比如"開始時間"或者"結束時間"這樣的泛化維度。

挖掘結構,里面是跟數據挖掘相關的。

角色,里面定義多維數據庫的安全信息。

了解完以上項目里的文件夾后,下面開始一步一步建立一個簡單的多維數據集。

首先,右鍵Data Sources文件夾,點擊New Data Source…。

接下來出現數據源向導界面。

點擊界面中的New新建一個連接。留意左面的Data Connections界面,里面會列出你以前用過的數據連接。

服務器名稱選擇本地,敲一個點就可以,然后數據庫選擇AdventureWorksDW2012。

AdventureWorks是微軟提供的數據庫示例,里面包含了業務數據庫(上圖中不帶DW字樣的)以及數據倉庫示例(剛才選擇的)。此外還包含很多跟SQLServer的其它示例,關於如何獲取並且部署這些項目,可以參考我的這篇隨筆:

微軟SQLServer官方示例項目部署-數據引擎和分析服務部分

設置好連接屬性后,點擊下一步。

這里要面設置模擬信息。這里手動指定用戶,使用你登陸機器的管理員賬號就可以。當然實際生產環境中不建議這么做。

指定好模擬信息后,點擊下一步。

給數據源起一個名字,點擊完成。接下來就可以看到在數據源文件夾下生成了一個ds后綴的數據源文件。

下面,右鍵數據源視圖文件夾,點擊New Data Source View…。

在數據源視圖中距中,在左面可以看到剛才建立的數據源連接,選中它,點擊下一步。

這一步會列出數據源連接下的表和視圖。

這里我們建立一個簡單的多維數據集,從左面可用對象列表里依次選擇FactInternetSales,DimCustomer,DimDate,DimGeography,DimProduct,DimProductCategory和DimProductSbcategory到右面的列表中,然后點擊下一步。

給數據源視圖起一個名字,然后點擊完成。

然后在數據源視圖中,可以看到剛剛選中的事實表和維度表。

可以看到在微軟提供的示例中,已經定義好了表間關系。在實際的項目中,我也這些關系要定義好,盡管很多項目都不太情願這么做,並且確實也會帶來一些麻煩,但這絕對是一個好的習慣和規范。

此外,在這個界面中也可以定義命名查詢,或者在表里添加一些計算列。

確認完畢數據源視圖之后,開始創建多維數據集。右鍵Cubes文件夾,選擇New Cube…。

選擇第一項使用已經存在的表。

多維數據集在SQL Server 2005之后,支持正向和逆向的方式創建多維數據集。通常來說是現有數據倉庫然后再有多維數據集,但是通過這個特性,可以先建立多維數據集,然后再根據多維數據集的結構反向生成數據倉庫里的表。通常來說后面的方法用的比較少。

點擊下一步。

選擇事實表FactInternetSales,點擊下一步。系統往往不能正確的事別你得事實表和維度表,所以每次到這里都建議檢查一下勾選的事實表是否正確。

點擊下一步。

指定多維數據集里的度量值,這些都是從事實表中來,所以像Promotion Key等這些鍵值字段拿來統計是沒有意義的,取消掉。還有需要留意系統會在最下面加入一個Count字段,在項目中可以根據Shijiazhuang情況來考慮是否要加入這個字段。

點擊下一步,開始確認多維數據集的維度。

這里暫時不需要更改任何內容,因為會在接下來的步驟中進行維度的詳細設計。這里直接點擊下一步。

最后,給多維數據集取一個名字,並且在預覽區域中檢查一下多維數據集的結構,然后點擊完成結束向導。

然后就系統會自動打開多維數據集的設置界面。這里先給維度重新命名,去掉前面的Dim前綴。

接下來設置維度屬性,首先雙擊Date.Dim,進入到維度設置界面。

在界面左側可以看到維度已經擁有了哪些屬性,右面的數據源視圖中可以看到維度表中都支持哪些字段。

這里可以拖拽我們需要的字段到維度屬性中,方法就是依次拖拽CalendarYear,MonthNumberOfYear和DayNumberOfMonth到維度屬性列表中。再將其重命名為Date, Month和Year。

設置成友好名稱,首先是為了友好並且維護方便,其次比較關鍵的是可以讓后期的MDX寫起來更舒服些。

接下來,修改Month的OrderBy屬性為Key。

指定好排序依據什么排序。如果不設置,就可能出現如下的錯誤情況:

指定根據Key排序后,月份的排列順序就正確了。

此外還需要設置Day的OrderBy屬性同樣為Key。

接下來建立維度層次。建立維度層次后,在前段分析工具就可以很方便的使用諸如年-月-日這樣的層次下鑽關系。

創建的方法是,首先拖拽Year到中間的Hierarchies中,會自動生成一個層次結構,然后再將Month和Day依次拖拽到新建的層次中。

時間維度創建完畢,接下來據創建產品維度。從數據源視圖中拖拽到Product, SubCategory和Category到維度屬性列表,然后再創建一個名為ProductHierarchy的層次結構。方法同時間維度的創建。

簡單的多維數據集設置完畢后,接下來需要做的就是部署到分析服務實例上。

不過在這之前,需要確認一下部署的設置,在解決方案管理器中右鍵選擇Properties。

在配置界面中,左邊選擇Deployment,然后在右邊的Server和Database里設置SSAS數據庫要部署到哪一個服務器以及部署之后數據庫的名稱叫什么。

這里我們選擇部署到本地並且使用默認數據庫名稱。

設置完畢后點擊確定關閉。

接下來同樣右鍵項目,選擇Process。

處理之前系統會檢測本地的版本跟服務器的版本,如果本地的版本比服務器上的新,那么就會出現過期提示,選擇是,替換服務器的版本。

部署完畢后,會出現處理界面。

對於上面的這個界面,你可能會問,為什么沒有Change Settings…按鈕。這個按鈕,只要你把窗體的高度再讓它高一些就出來了。點擊這個按鈕后,會出現設置更改金額面。

這里最常用的就是Dimension key errors。在實際的數據倉庫操作中,很難避免會出現維度對應不上或者重復鍵或者缺失等情況,為了忽略這些錯誤,就可以進到這個界面進行相應的維度處理錯誤設置。這里先忽略設置直接點Cancel回到處理界面然后點Run開始處理。

在處理進度界面中,可以看到系統正在處理哪部分內容,假如處理的過程中發生了錯誤,也可以在這個界面中詳細看到是哪里出的錯。處理完畢后,點擊Close關閉。

關於SSAS數據庫的部署方法也很多,詳細的內容可以參考我先前的一篇隨筆:

BI筆記之--- SSAS部署的幾種方式

在Solution Explorer中雙擊剛才建立的多維數據集,然后在多維數據集設置界面中選擇Browser選項卡。

通過這個界面可以簡單的瀏覽一下剛才在多維數據集里聚合的數據,比如,拖拽一個度量到中間的空白區域中,然后再拖拽幾個維度,就可以對任意一個度量進行維度分解。

此外,在最新的2012版本的瀏覽界面中,加入了一個小按鈕,就是在Excel中查看。

點擊之后,會自動打開Excel,在Excel文檔中會自動建立好了到這個多維數據集的連接,省去了先前在Excel中還要點擊好多步驟的麻煩。

當然,在Excel連接多維數據集並且對其進行分析只是多維數據集應用其中的一個方面,關於它還有一個概念就是MDX,它就如同SQL對數據庫一樣,MDX主要就是查詢多維數據庫用的,它的結構也同樣是SELECT FROM WHERE這樣的結構。關於這方面的應用開發,可以參考我早先的兩篇隨筆:

在Silverlight下用Visifire顯示多維數據集中的數據

在Silverlight下用Visifire顯示多維數據集中的數據(二)

此外,在處理多維數據集的過程中,可以選擇增量的方式進行處理,詳細的方法可以參考我的這篇隨筆:

BI筆記之---增量方式處理多維數據集

以及,關於在多維數據集的處理上我的幾點個人建議:

BI筆記之---合理處理SSAS數據庫的幾點建議

 

 

至此,如何建立一個簡單的多維數據集就介紹到這里。在實際項目中建立一個多維數據集還需要做很多的細化工作,這里只是簡單的對其中關鍵幾個過程進行介紹和演示。如果想了解關於多維數據集的更多功能,可以參考此篇中提到的微軟提供的Adventure Works示例,雖然里面都是示例數據,但很多表中都很值得我們參考,個人建議在實際項目中開發多維數據集的時候,對於很多細節問題不知道該如何做的時候,都回過來參考下微軟的這個示例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM