iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 17
0
Data Technology

Microsoft R Solution系列 第 17

Day17 - MSSQL R Service Part5 建立模型與儲存至MSSQL Table

  • 分享至 

  • xImage
  •  

本篇的重點就是要來實作一下, 在R Service裡建立預測模型, 並且將之存在MSSQL Table, 方便日後使用, 而在存在Table裡有許多的好處, 如可建立模型的版本, 定期更新等, 可以玩出許多的花樣, 把模型的建置視為系統流程的一部分, 這就是Open Source R無法輕易做到的,我們利用前幾篇已經匯入MSSQL的薪資職位核薪表資料如下, 來進行實作
https://ithelp.ithome.com.tw/upload/images/20180104/20103333TkRQjVnVWL.png

接下來在SSMS輸入底下程式碼https://ithelp.ithome.com.tw/upload/images/20180104/20103333BlwDF0hpxp.png

這邊提醒一下, 模型是在R裡面是透過serialize()函數將其序列化出來, 所以MSSQL要用varbinary(max)的方式去接出來, 另外一點如DAY16所提, 是R裡面的單引號必須改用兩個單引號, 避免程式報錯, 再來就是同DAY15提到的, 需要寫入到Table的話, 必須包成Store Procedure, 所以接下來先來建一個Table來存放模型的二進位資料, 在SSMS的程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333W4DGbKXpSu.png

另外把產生模型的SQL包成一支Store Procedure如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333Wnw8fDhulI.png

接著呼叫包好的spPosition_Salaries_Modeladd, 就可以將模型存入Table了如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333127VciRqDT.png

原本到這就要打完收工了, 但是轉念一想, 若想從R Servcie多丟幾個變數出來如模型的敘述之類的, 然後寫入Table, 這該怎麼做呢? 還有每次INSERT INTO的時候, 都要呼叫包好的Store Procedure來處理, 有沒有辦法?, 一氣呵成寫在同一個SQL裡, 不知道有沒有人想到了? 答案就在Day14裡, 可以用@params來實現兩個願望一次完成, 利用SSMS的工具來修改模型存放Table, 點選剛建立Position_Salaries_Model, 按下右鍵選擇Design如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333wghKqCX9NC.png

新增兩個欄位如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333LTwi6u5ALm.png

接下來修改SQL如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333eFoAwhhGeW.png

透過Select檢查變數是否有接到? 除此之後, 從R Service傳出來的東西, 在這裡沒有用OutputDataSet與WITH RESULT SETS去接出來, 反倒是用OUTPUT這個鍵字, 將變數傳出來, 確認沒問題後, 就可以把INSERT語法加進去, 並將結果SELECT出來檢查如下
https://ithelp.ithome.com.tw/upload/images/20180104/20103333TNKcSkTZ1v.png

結果好棒棒/images/emoticon/emoticon34.gif, 兩個願望果真一次達成, 符合懶惰攻城獅的特質, 能用最少步驟完工作, 才是攻城獅或程式猿的使命啊/images/emoticon/emoticon12.gif

本文參考
https://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/rtsql-create-a-predictive-model-r

後記: @params + OUTPUT的用法, 感覺好像密技一樣, 沒看Microsoft官方文件, 誰會啊!!!/images/emoticon/emoticon36.gif


上一篇
Day16 - MSSQL R Service Part4 資料類型和資料物件
下一篇
Day18 - MSSQL R Service Part6 使用儲存在MSSQL Table的模型
系列文
Microsoft R Solution30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言