RevoScaleR (SQL Server 機器學習服務中的 R 套件)
適用於: SQL Server 2016 (13.x) 和更新版本
RevoScaleR 是來自 Microsoft 的 R 套件,其支援分散式計算、遠端計算內容,以及高效能資料科學演算法。 其也支援資料匯入、資料轉換、摘要、視覺效果和分析。 該套件包含在 SQL Server 機器學習服務與 SQL Server 2016 R Services 中。
相較於基底 R 函式,RevoScaleR 作業可針對大型的資料集、平行處理,以及在分散式檔案系統上執行。 函式可以使用區塊化,以及在作業完成時重組結果,來處理無法放入記憶體中的資料集。
RevoScaleR 函式會以 rx** 或 Rx 前置詞表示,使其易於識別。
RevoScaleR 可作為分散式資料科學的平台。 例如,您可以在 MicrosoftML 中,使用 RevoScaleR 計算內容和轉換搭配最先進的演算法。 您也可以使用 rxExec 平行執行基底 R 函式。
完整參考文件
RevoScaleR 套件分散在多個 Microsoft 產品中,但不論是在 SQL Server 或其他產品中取得該套件,其使用方式都相同。 由於函數相同,因此個別 RevoScaleR 函數的文件只發佈至 R 參考底下的一個位置。 若有任何產品特定行為存在,函式說明頁面中將會註明不一致之處。
版本與平台
RevoScaleR 套件以 R 3.4.3 為基礎,且只有當安裝下列其中一個 Microsoft 產品或下載項目時才會提供:
注意
在 SQL Server 2017 中,完整產品發行版本僅適用於 Windows。 在 SQL Server 2019 中,RevoScaleR 則同時支援 Windows 和 Linux。
依類別區分的函式
本節依類別列出函式,讓您了解每個函式的使用方式。 您也可以使用目錄來依字母順序尋找函式。
1-資料來源與計算
RevoScaleR 包含用於建立資料來源及設定計算執行位置 (或計算內容) 的函式。 資料來源物件是可一起指定連接字串和您想要之資料集 (可定義為資料表、檢視或查詢) 的容器。 不支援預存程序呼叫。 下表列出與 SQL Server 案例相關的函式。
在某些情況下,SQL Server 和 R 會使用不同的資料類型。 如需 SQL 與 R 資料類型間的對應清單,請參閱 R 與 SQL 的對應資料類型。
函式 | 描述 |
---|---|
RxInSqlServer | 建立 SQL Server 計算內容物件以將計算推送至遠端執行個體。 數個 RevoScaleR 函式會以計算內容作為引數。 |
rxGetComputeContext / rxSetComputeContext | 取得或設定使用中的計算內容。 |
RxSqlServerData | 根據 SQL Server 查詢或資料表來建立資料物件。 |
RxOdbcData | 根據 ODBC 連線來建立資料來源。 |
RxXdfData | 根據本機 XDF 檔案來建立資料來源。 XDF 檔案通常用來將記憶體內的資料卸載至磁碟。 當使用的資料超過可從資料庫以單一批次傳輸的資料,或是超過記憶體可容納的資料時,XDF 檔案非常實用。 例如,如果您會定期將大量資料從資料庫移到本機工作站,而不是針對每個 R 作業重複地查詢資料庫,則您可以使用 XDF 檔案作為一種快取以將資料儲存在本機,然後在您的 R 工作區中使用它。 |
提示
如果您不熟悉資料來源或計算內容,建議您先從分散式計算這篇文章開始。
執行 DDL 陳述式
您可以從 R 執行 DDL 陳述式,前提是您具有執行個體及資料庫的必要權限。 下列函式會使用 ODBC 呼叫來執行 DDL 陳述式或擷取資料庫結構描述。
函式 | 說明 |
---|---|
rxSqlServerTableExists 和 rxSqlServerDropTable | 卸除 SQL Server 資料表,或檢查資料庫資料表或物件是否存在。 |
rxExecuteSQLDDL | 執行定義或操作資料庫物件的資料定義語言 (DDL) 命令。 此函式無法傳回資料,而且只會用來擷取或修改物件結構描述或中繼資料。 |
2-資料操作 (ETL)
建立資料來源物件之後,您可以使用物件將資料載入其中、轉換資料,或將新的資料寫入至指定的目的地。 根據來源中的資料大小,您也可以定義資料來源中的批次大小,以及以區塊移動資料。
函式 | 說明 |
---|---|
rxOpen-methods | 檢查資料來源是否可用、開啟或關閉資料來源、從來源讀取資料、將資料寫入至目標,以及關閉資料來源。 |
rxImport | 將資料從資料來源移到檔案儲存體或資料框架中。 |
rxDataStep | 在資料來源之間移動資料時進行轉換。 |
3-圖形函式
函式名稱 | 描述 |
---|---|
rxHistogram | 從資料建立長條圖。 |
rxLinePlot | 從資料建立線繪圖。 |
rxLorenz | 計算可繪製的 Lorenz 曲線。 |
rxRocCurve | 從實際和預測資料計算並繪製 ROC 曲線。 |
4-描述性統計資料
函式名稱 | 描述 |
---|---|
rxQuantile * | 計算 .xdf 檔案和資料框架的近似分位數,而不需要排序。 |
rxSummary * | 資料的基本摘要統計資料,包括依群組計算。 不支援依群組計算寫入至 .xdf 檔案。 |
rxCrossTabs * | 資料以公式為基礎的交叉資料表。 |
rxCube * | 以公式為基礎的替代交叉資料表,針對有效表示傳回的 Cube 結果所設計。 不支援將輸出寫入至 .xdf 檔案。 |
rxMarginals | 交叉資料表的臨界摘要。 |
as.xtabs | 將交叉資料表結果轉換為 xtabs 物件。 |
rxChiSquaredTest | 針對 xtabs 物件執行卡方檢定。 搭配小型資料集使用,而且不會將資料區塊化。 |
rxFisherTest | 針對 xtabs 物件執行費雪精確檢定。 搭配小型資料集使用,而且不會將資料區塊化。 |
rxKendallCor | 使用 xtabs 物件計算肯德爾等級相關係數。 |
rxPairwiseCrossTab | 將函式套用到成對組合的 xtabs 物件資料列與資料行。 |
rxRiskRatio | 計算兩兩 xtabs 物件的相對風險。 |
rxOddsRatio | 計算兩兩 xtabs 物件的勝算比。 |
* 表示此類別中最常用的函式。
5-預測函式
函式名稱 | 描述 |
---|---|
rxLinMod * | 將線性模型套入資料。 |
rxLogit * | 將羅吉斯迴歸模型套入資料。 |
rxGlm * | 將廣義線性模型套入資料。 |
rxCovCor * | 計算一組變數的共變數、相關性或正方形 / 交叉乘積矩陣的總和。 |
rxDTree * | 將分類或迴歸樹狀結構套入資料。 |
rxBTrees * | 使用隨機梯度提升演算法,將分類或迴歸決策樹系套入資料。 |
rxDForest * | 將分類或迴歸決策樹系套入資料。 |
rxPredict * | 計算適合模型的預測。 輸出必須是 XDF 資料來源。 |
rxKmeans * | 執行 K 平均數叢集。 |
rxNaiveBayes * | 執行貝氏機率分類。 |
rxCov | 計算一組變數的共變數矩陣。 |
rxCor | 計算一組變數的相關矩陣。 |
rxSSCP | 計算一組變數的正方形/交叉乘積矩陣總和。 |
rxRoc | 使用二元分類器系統的實際與預測值的接收器操作特徵曲線 (ROC) 計算。 |
* 表示此類別中最常用的函式。
如何使用 RevoScaleR
封裝在預存程序中的 R 程式碼可呼叫 RevoScaleR 中的函式。 大多數開發人員會在本機建置 RevoScaleR 解決方案,然後將完成的 R 程式碼移轉至預存程序作為部署練習。
在本機執行時,您通常會從命令列或從 R 開發環境執行 R 指令碼,然後使用其中一個 RevoScaleR 函式來指定 SQL Server 計算內容。 您可以將遠端計算內容用於整個程式碼,也可以用於個別函式。 例如,您可以將模型定型卸載至伺服器,以使用最新資料並避免資料移動。
當您準備好將 R 指令碼封裝在預存程序 sp_execute_external_script 內時,建議您將程式碼重寫成已清楚定義輸入和輸出的單一函式。