快速入門:R 函式搭配 SQL 機器學習
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 受控執行個體
在此快速入門中,您將會了解如何搭配 SQL Server 機器學習服務或巨量資料叢集使用 R 數學與公用程式函式。 以 T-SQL 實作統計函數通常會很複雜,但若使用 R,只需要幾行程式碼就可以完成。
在此快速入門中,您將會了解如何搭配 SQL Server 機器學習服務使用 R 數學與公用程式函式。 以 T-SQL 實作統計函數通常會很複雜,但若使用 R,只需要幾行程式碼就可以完成。
在此快速入門中,您將會了解如何搭配 SQL Server R Services 使用 R 數學與公用程式函式。 以 T-SQL 實作統計函數通常會很複雜,但若使用 R,只需要幾行程式碼就可以完成。
在此快速入門中,您將了解在 Azure SQL 受控執行個體機器學習服務中使用 R 時,如何使用資料結構與資料類型。 您將了解如何在 R 與 SQL 受控執行個體之間移動資料,以及可能發生的常見問題。
Prerequisites
您需要符合下列必要條件,才能執行此快速入門。
- SQL Server 機器學習服務。 若要安裝機器學習服務,請參閱 Windows 安裝指南或 Linux 安裝指南。 您也可以啟用 SQL Server 巨量資料叢集上的機器學習服務。
- SQL Server 機器學習服務。 若要安裝機器學習服務,請參閱 Windows 安裝指南。
- SQL Server 2016 R Services。 若要安裝 R Services,請參閱 Windows 安裝指南。
- Azure SQL 受控執行個體機器學習服務。 如需詳細資訊,請參閱 Azure SQL 受控執行個體機器學習服務概觀。
- 執行 SQL 查詢的工具,這些查詢包含 R 指令碼。 本快速入門使用 Azure Data Studio。
建立預存程序來產生亂數
為了簡單起見,讓我們使用預設會安裝並載入的 R stats
套件。 該套件包含數百個用來進行一般統計工作的函式,其中 rnorm
函式會在指定標準差和平均值的情況下,使用常態分佈產生指定數目的亂數。
例如,下列 R 程式碼會在指定標準差為 3 的情況下,傳回平均值為 50 的 100 個數字。
as.data.frame(rnorm(100, mean = 50, sd = 3));
若要從 T-SQL 呼叫此行的 R,請在 sp_execute_external_script
的 R 指令碼參數中新增 R 函數,如下所示:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
, @input_data_1 = N' ;'
WITH RESULT SETS (([Density] float NOT NULL));
想要更輕鬆地產生一組不同的亂數?
與 T-SQL 合併時很容易做到。 您可以定義一個預存程序來取得使用者的引數,然後將這些引數當做變數傳遞至 R 指令碼。
CREATE PROCEDURE MyRNorm (
@param1 INT
, @param2 INT
, @param3 INT
)
AS
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
, @input_data_1 = N' ;'
, @params = N' @mynumbers int, @mymean int, @mysd int'
, @mynumbers = @param1
, @mymean = @param2
, @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
第一行定義執行預存程序時所需要的每個 SQL 輸入參數。
開頭為
@params
的行會定義 R 程式碼所使用的所有變數,以及對應的 SQL 資料類型。緊接的行會將 SQL 參數名稱對應至相對應的 R 變數名稱。
現在您已將 R 函式包裝於預存程序中,您將可以輕鬆地呼叫函式並傳入不同的值,如下所示︰
EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3
使用 R 公用程式函式進行疑難排解
預設安裝的 utils 套件可提供用來調查目前 R 環境的各種公用程式函數。 如果您發現您的 R 程式碼在 SQL Server 和外部環境中的執行方式不一致,這些函數會非常有用。
例如,您可能會在 R 中使用系統計時函數,例如 system.time
與 proc.time
,以擷取 R 程序使用的時間,並分析效能問題。 如需範例,請參閱建立資料特徵教學課程,其中 R 時間函數會內嵌在解決方案中。
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(utils);
start.time <- proc.time();
# Run R processes
elapsed_time <- proc.time() - start.time;'
如需其他有用的函式,請參閱使用 R 分析函式來改善效能。
後續步驟
若要搭配 SQL 機器學習使用 R 來建立機器學習模型,請依照此快速入門進行: