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

假如你有一個購物類的網站,那麼你如何給你的客戶來推薦產品呢?這個功能在不少電商類網站都有,那麼,經過SQL Server Analysis Services的數據挖掘功能,你也能夠輕鬆的來構建相似的功能。數據庫

此篇將介紹如何在SSAS存儲過程當中封裝一段預測查詢,從而方便客戶端的調用。dom

 

在SQLServer數據引擎服務中,編寫存儲過程,咱們能夠經過SQL語句以及CLR的方式進行編寫。那麼在分析服務下可否寫存儲過程呢?答案是能夠的,只不過是只能經過CLR的方式來實現。如下記錄實現過程及要點。網站

 

首先,建立的項目類型爲類庫項目,並且,不管你使用Visual Studio的什麼版本,都要指定.net framework的版本爲2.0。spa

引用關鍵dll文件,引用地址:C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\bin\msmgdsrv.dll.net

留意下MSAS11,本文使用的環境是SQL Server 2012,若是是2008的話對應的是MSAS10。3d

代碼中須要添加的引用:調試

using Microsoft.AnalysisServices.AdomdServer;blog

而後在類裏建立方法,須要注意的是在方法前須要加入以下聲明:接口

[SafeToPrepare(true)]進程

因爲在此存儲過,程中的操做是接收參數後而後將其拼裝成DMX語句來返回相應的預測結果,因此項目引用了ADOMD.NET。關於ADOMD.NET能夠參考前幾篇文章。

留意到在本文的示例代碼中,把訪問的接口文件和實現文件分開了,這主要是,在接口文件裏,方法的聲明標記須要ADOMDServer的支持(留意前面提到的using),而啓動一個DMX查詢須要ADOMDClient的支持,它們下面都有ADOMDConnection,爲了不命名空間的衝突因此這裏分開來寫:

留意下返回類型是DataTable。你也能夠選擇返回其它類型,可是爲了在下面能在Management Studio中的DMX查詢界面可以直接看到結果,因此須要指定DataTable返回類型。

存儲過程的代碼建立完畢後,進行編譯,編譯完成後能夠在bin目錄下看到生成的dll文件,這個文件就是要被髮布到SSAS要用到的。好比這裏用到的是SSASCLR.dll。

打開Management Studio,鏈接到分析服務,找到要用到的數據庫,這裏使用AdventureWorks示例數據庫。

在Assembly下點擊右鍵,選擇New Assembly…

在File name旁點擊瀏覽,找到剛纔編譯的dll文件。點擊OK,部署完成。

新建DMX查詢:

SSAS下CLR的存儲過程調用格式:程序集名稱+方法名

筆者不得不提一句,這是一個很特殊的地方,由於直接跳過了類名。

好比:CALL [SSASCLR].GetMiningResult()

以上如何開發和部署SSAS的CLR存儲過程介紹完畢。接下來還有一個問題,就是如何調試存儲過程呢?好比,在存儲過程被調用的時候,檢查下代碼中拼裝的DMX語句是否正確。

這裏首先須要在Visual Studio裏打開項目,而後在菜單欄的"調試"下找到"附加到進程"。

找到分析服務所對應的進程,名稱爲msmdsrv.exe。要選中下面的"顯示全部用戶的進程"這裏才能夠看的到。

這樣,當咱們在Management Studio裏經過DMX調用這個存儲過程,而且在代碼裏設置好斷點,那麼就能夠在對應位置看到調試信息。

 

總結:

此篇在前幾篇的基礎之下,把DMX查詢挖掘模型的過程封裝到了SSAS CLR存儲過程中,而且演示了完整的方法以及須要注意到的地方。

示例項目下載-環境VS2013+SQLServer2012

相關文章
相關標籤/搜索