共用方式為


使用 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 資料表。

  1. 將計算內容切換為在上一個教學課程中建立的 sqlCompute:

    rxSetComputeContext(sqlCompute)
    
  2. 呼叫 rxSummary 函式並傳遞必要引數,例如公式及資料來源,以及將結果指派給變數 sumOut

    sumOut <- rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS)
    

    R 語言提供許多彙總函數,但 RevoScaleR 中的 rxSummary 支援在各種遠端計算內容上執行,包括 SQL Server。 如需類似函式的詳細資訊,請參閱使用 RevoScaleR 建立資料摘要

  3. 將 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

建立本機摘要

  1. 變更計算內容,以在本機執行所有工作。

    rxSetComputeContext ("local")
    
  2. 從 SQL Server 解壓縮資料時,您通常可以藉由增加每次讀取時解壓縮的資料列數來取得較佳效能 (假設記憶體可容納增加的區塊大小)。 執行下列命令,即可在資料來源上增加 rowsPerRead 參數的值。 之前, rowsPerRead 的值已設為 5000。

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. 請針對新的資料來源呼叫 rxSummary

    rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlServerDS1)
    

    實際的結果應和您在 SQL Server 電腦內容中執行 rxSummary 所得結果相同。 不過,作業可能會更快或更慢。 大部分取決於資料庫連線,因為正在將資料傳輸至本機電腦進行分析。

  4. 在接下來的幾個教學課程中,我們將切換回遠端計算內容。

    rxSetComputeContext(sqlCompute)
    

下一步