先來看這一篇主要實作的結果
這支Windows Form主要提供兩個功能, 一個功能是讓使用者輸入Level, 然後呼叫上一篇建好的spPosition_Salaries_Predict來預測薪資, 另外一個是Windows Form載入的時候, 自動呼叫spPosition_Salaries_Plot回傳在R Service繪製好的圖形, 放在PictureBox裡, 接下來動手寫程式吧
我們在原本的R Solution下, 新增一個專案如下
選擇Windows Form專案類型如下
一開始我們先拉出五個控制項, 兩個Label, 一個TextBox, 一個Button與一個PictureBox, 並佈局如下, PictureBox的大小設為800x600
先將資料庫連線字串宣告成常數, 並引用System.IO與System.Data.SqlClient如下
接下來在表單的Properties找到事件的頁籤, 點擊Load兩下, 來建立Form1_Load的事件
在Form1_Load裡輸入底下程式碼
然後建置一下專案, 並將Windows Form設為起始專案, 跑一下看看, 是否能讀取R Service裡的圖形? 成功畫面如下
在Form1設計模式下, 點擊Predict按鈕兩次, 建立按鈕點擊事件btnPredict_Click
在btnPredict_Click裡輸入底下程式碼
一樣跑起來看看, 是否能成功叫用spPosition_Salaries_Predict?, 在TextBox輸入6.5, 成功畫面如下
到這邊打完收工, 回應Day08所埋的梗:
“HR主管又提了個需求, 希望有個Web, 可以做為輸入介面與呈現預測結果”
其實已經完成囉! 只是有人會說””不是要做Web嗎?” 原因是整個鐵人賽的最後一個Part, 會整理筆者所知道R如何與Web互動的相關範例, 那為什麼會想做這個整理? 原因是之前參加過R的研討會, 總是有聽眾會問這個部分, 如何讓R落地? 畢竟以Python來說是可以一氣呵成與Web互動, 用筆者以前練習Flask專案為例子如下
Python程式碼如下
由上述程式碼可以了解到, 可以直接在同一個py檔裡, 完成Web coding與模型叫用, 這也是為什麼這麼多人愛用Python的原因, 不過現在透過MSSQL R Service, 不管是甚麼程式語言, 只要能叫用MSSQL的Store Procedure都能跟R互動囉, 並不侷限特定語言了, 意思是與R互動, 其實就是當作API來處理了!
最後用底下這張圖來總結R Service的應用
https://docs.microsoft.com/zh-tw/sql/advanced-analytics/r/getting-started-with-sql-server-r-services
後記: 翻到自己去年練習Python的專案, 下次若有機會再參加鐵人賽, 來寫Python好啦