使用 R 計算摘要統計資料 (SQL Server 和 RevoScaleR 教學課程)
適用於: SQL Server 2016 (13.x) 和更新版本
這是 RevoScaleR 教學課程系列的教學課程 5;此教學課程系列說明如何搭配 SQL Server 使用 RevoScaleR 函式 \(英文\)。
此教學課程會使用在先前教學課程中建立的資料來源和計算內容,來執行高效能的 R 指令碼。 在此教學課程中,您將會使用本機和遠端伺服器計算內容來執行下列工作:
- 將計算內容切換為 SQL Server
- 取得遠端資料物件的摘要統計資料
- 計算本機摘要
如果您已完成先前的教學課程,應該會有這些遠端計算內容:sqlCompute 和 sqlComputeTrace。 之後,您將會使用 sqlCompute 和本機計算內容來繼續進行未來的教學課程。
使用 R IDE 或 Rgui 來執行此教學課程中的 R 指令碼。
計算遠端資料的摘要統計資料
執行任何遠端的 R 程式碼之前,您必須指定遠端計算內容。 所有後續計算工作都會在 sqlCompute 參數中指定的 SQL Server 電腦上進行。
計算內容會保持在作用中的狀態,直到您進行變更為止。 不過,任何「無法」在遠端伺服器內容中執行的 R 指令碼都將在本機上自動執行。
若要查看計算內容的運作方式,請在遠端 SQL Server 上產生 sqlFraudDS 資料來源的摘要統計資料。 此資料來源物件是在教學課程二中建立,並代表 RevoDeepDive 資料庫中的 ccFraudSmall 資料表。
將計算內容切換為在上一個教學課程中建立的 sqlCompute:
rxSetComputeContext(sqlCompute)
呼叫 rxSummary 函式並傳遞必要引數,例如公式及資料來源,以及將結果指派給變數
sumOut
。sumOut <- rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS)
R 語言提供許多彙總函數,但 RevoScaleR 中的 rxSummary 支援在各種遠端計算內容上執行,包括 SQL Server。 如需類似函式的詳細資訊,請參閱使用 RevoScaleR 建立資料摘要。
將 sumOut 的內容列印到主控台。
sumOut
注意
如果您收到錯誤,請等候幾分鐘讓執行完成,然後再重試命令。
結果
Summary Statistics Results for: ~gender + balance + numTrans + numIntlTrans + creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Number of valid observations: 10000
Name Mean StdDev Min Max ValidObs MissingObs
balance 4075.0318 3926.558714 0 25626 100000
numTrans 29.1061 26.619923 0 100 10000 0 100000
numIntlTrans 4.0868 8.726757 0 60 10000 0 100000
creditLine 9.1856 9.870364 1 75 10000 0 100000
Category Counts for gender
Number of categories: 2
Number of valid observations: 10000
Number of missing observations: 0
gender Counts
Male 6154
Female 3846
建立本機摘要
變更計算內容,以在本機執行所有工作。
rxSetComputeContext ("local")
從 SQL Server 解壓縮資料時,您通常可以藉由增加每次讀取時解壓縮的資料列數來取得較佳效能 (假設記憶體可容納增加的區塊大小)。 執行下列命令,即可在資料來源上增加 rowsPerRead 參數的值。 之前, rowsPerRead 的值已設為 5000。
sqlServerDS1 <- RxSqlServerData( connectionString = sqlConnString, table = sqlFraudTable, colInfo = ccColInfo, rowsPerRead = 10000)
請針對新的資料來源呼叫 rxSummary。
rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlServerDS1)
實際的結果應和您在 SQL Server 電腦內容中執行 rxSummary 所得結果相同。 不過,作業可能會更快或更慢。 大部分取決於資料庫連線,因為正在將資料傳輸至本機電腦進行分析。
在接下來的幾個教學課程中,我們將切換回遠端計算內容。
rxSetComputeContext(sqlCompute)