SQL Server 2017 R入門

SQL Server發展至今30年,微軟一直致力在提供客戶最新的功能。在SQL2016時甚至買下企業版的R,讓關聯性資料庫可以有更強的進階分析能力,也讓一直引頸期盼演算法更新的企業客戶(例如設有 data mining 分析部門的客戶族群)可以一展笑顏。在SQL2017中專業的R團隊,除了讓二邊的整合更加流暢,還多增加了對 Python的整合,強化了SQL Server對於AI的進階分析功能

經過多年鴨子划水般的努力,開源的 Open R 成功地打破 SAS與 SPSS的獨大壟斷,贏得學界(統計系所、醫學系所、大氣科學系統、物理系統…等其他研究機關)與業界(金融保險業、遺傳醫學、政府機關…等需要大量資料先進分析的行業)廣泛地應用在各種情境上。也是因為開源的力量,有人起頭、有人幫忙測試、有人幫忙解bug、有人幫忙宣傳,Open R目前已經累計超過7000個 CRAN的下載套件。早在十年前,當時大家只熟悉在CPU上面開發程式,還不曉得怎麼在GPU上面開發程式,但透過下載Open R套件你就可以在不增加硬體預算與極少GPU的背景知識下,開始應用你電腦中獨立顯示卡中的GPU來幫忙運算。同理更早之前的 Hadoop也是一樣,因為社群夠大,就像聚寶盆一樣,一直會有新的應用套件…

至於什麼是 Revolution Analytics?相較於Open R的單一執行緒,這是一套百倍起跳的商業應用的專業R的版本,除了高效地多執行緒與分散式架構的支援(Scale out的特點是可以用更多台較便宜的中階伺服器取代較昂貴高階伺服器),還可以在多種不同的作業系統下運行,還包含了金融/電信業愛用的 Unix、Tera data…等環境。

基礎於全球大量的學校(最多是統計系所)畢業生都學會了R語言,以及成熟廣大的R社群不斷地發表各種應用情境的成功案例,微軟終於在2015年下定決心,要併購Revolution Analytics 來強化其先進分析功能。

**面對激烈的競爭,商業等級的統計軟體也出現巨大的變化!例如SPSS賣給了IBM,SAS也改成只租不賣的商業模式

下圖是透過 gganimate 函式庫所做出的 R Lady女性R語言學習社群在全世界的成長狀況。仔細看台灣也是有不錯的成績喔!
R lady growth in the world wide
言歸正傳,以下就開始介紹,如何應用 SQL2017的 R服務,在不同的開發情境上?
1. 使用 Dos console:適合熟悉R語言,且不重度依賴IDE開發工具在指令自動輸入、校正、繪圖功能
2. 使用 R Studio:適合熟悉R語言,且習慣使用 IDE開發工具在指令自動輸入、校正、繪圖功能
3. 使用 T-SQL:適合熟悉資料庫語法的DBA,採用微軟為降低R的學習曲線,所新增的Stored Procedure指令
4. 使用 PowerBI:適合熟悉R語言,且需要前端高度視覺化的呈現工具者

以下的範例,將示範在一秒內將過去十年微軟股價載入

  1. 使用 Dos console
    在安裝好R的環境下,開啟Dos console。接著用cd指令,切換至SQL Server R Service的安裝目錄。最後鍵入 R.exe 啟動它
    鍵入install.packages('quantmod')下載所需的股價資訊quantmod套件
    下載後,鍵入library("quantmod")接著將函式庫載入記憶體中
    鍵入getSymbols.google("MSFT", env= .GlobalEnv) 呼叫函式去網際網路上將微軟的資料抓回本機中
    再鍵入chartSeries(MSFT, subset='last 10 days') 呼叫繪圖函式畫出最近十天的數值
    鍵入addMACD()畫出指數移動平均值(Moving Average Convergence Divergence)
    在Windows環境中,就會以新開視窗的方式,透過R Service的運算把圖畫出來
  2. 使用 R Studio
    在Windows環境中安裝R Studio,並在環境配置的設定中,將R Server的安裝路徑告訴這個IDE工具
    同上,一樣的指令,但在輸入時,會有智慧輸入/檢查功能來幫忙,也有相關的指令(含參數)的詳細說明,加速開發的進行
    並不會以新開視窗的方式,而是直接在Plot頁籤(工作區)把圖繪製出來
  3. 使用 T-SQL
    鍵入 execute sp_execute_external_script @language = N'R', @script = N'xxxxxxxx'將R的指令"原封不動"的貼入,包含原來的空白,結果將會以標準地表格的方式被呈現

    不滿意嗎?若你想要以圖形的方式呈現,不是辦不到,只是還需要透過第三方工具的幫忙
    首先你需要,將制式的表格輸出,再加一段以XML輸出
    將XML複製到 https://codebeautify.org/網站中,應用其Base64轉換至圖形的功能
    再下載回本機中應用
  4. 使用 PowerBI
    在有安裝PowerBI desktop的環境中,啟用程式,並且在環境配置的設定中,將R Server的安裝路徑 PowerBI
    在PowerBI desktop的上方 Ribbon區找到Get Data,我們的目標是R Script,可以在All或是Other分類中找到
    將指令"原封不動"的輸入,並按下OK
    可以發現右邊已經有資料的Schema可以使用了,但是當我們選了一些欄位,系統會自動套用折線圖之類的非R專用物件
    你應該在有資料集的條件下,先不急著選擇欄位,而是先點選R專用物件,在R Script Editor中,鍵入繪圖指令,欄位會自動被帶進來,你可以在右邊偏中間的Value區,再進一步的選擇所需欄位
    在 R Script Editor 工具列上按下執行,並最小化指令區,檢視視覺化的呈現

** R語言不同於其他程式語言,開發時不需要刻意為了美觀而去縮排或是對齊程式碼,因為它的compiler並不會自動幫你trim掉多餘的空白,反而會造成編譯失敗
若你對 R語言想要進一步的研究,請參考標準文件,若你還是習慣 SSMS請參考這一篇

李秉錡 Christian Lee
Once worked at Microsoft Taiwan