共用方式為


使用 R 轉換資料 (SQL Server 和 RevoScaleR 教學課程)

適用於: SQL Server 2016 (13.x) 和更新版本

此教學課程是 RevoScaleR 教學課程系列的第 9 個,該系列說明如何搭配 SQL Server 使用 RevoScaleR 函式 \(英文\)。

在此教學課程中,您將會了解在分析的各個階段用於轉換資料的 RevoScaleR 函式。

  • 使用 rxDataStep 建立和轉換資料子集
  • 使用 rxImport,在匯入期間將傳輸中資料於 XDF 檔案或記憶體內部資料框架之間進行轉換

rxSummaryrxCuberxLinModrxLogit 函數雖然不是專為資料移動所設計,但全部都支援資料轉換。

使用 rxDataStep 轉換變數

rxDataStep 函數會一次處理一個資料區塊,從一個資料來源讀取並寫入另一個資料來源。 您可以指定要轉換的資料行、要載入的轉換等等。

為了讓此範例更有趣,讓我們使用另一個 R 套件中的函式來轉換資料。 boot 套件是其中一個「建議」的套件;也就是說, boot 會隨附於每個 R 版本,但未在啟動時自動載入。 因此,在針對 R 整合所設定的 SQL Server 執行個體上,應該已經可以使用此套件。

boot 套件,使用 inv.logit 函式,這會計算 logit 的反函式。 換句話說, inv.logit 函數會將 logit 轉換回 [0,1] 刻度的機率。

提示

另一個取得此刻度預測的方式,是在 rxPredict 的原始呼叫中,將 type 參數設定為 response

  1. 一開始先建立一個資料來源以保存資料表 ccScoreOutput 的資料。

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. 再加入另一個資料來源以保存資料表 ccScoreOutput2 的資料。

    sqlOutScoreDS2 <- RxSqlServerData( table =  "ccScoreOutput2",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    

    在新的資料表中,從先前的 ccScoreOutput 資料表取得所有變數,再加上新建立的變數。

  3. 將計算內容設定為 SQL Server 執行個體。

    rxSetComputeContext(sqlCompute)
    
  4. 使用 rxSqlServerTableExists 函式來檢查輸出資料表 ccScoreOutput2 是否已經存在,如果是的話,則使用 rxSqlServerDropTable 函式刪除資料表。

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. 呼叫 rxDataStep 函數,然後從清單中指定所需的轉換。

    rxDataStep(inData = sqlOutScoreDS,
        outFile = sqlOutScoreDS2,
        transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)),
        transformPackages = "boot",
        overwrite = TRUE)
    

    當您定義要套用至每個資料行的轉換時,您也可以指定執行轉換所需的任何其他 R 套件。 如需您可以執行的轉換類型詳細資訊,請參閱如何使用 RevoScaleR 轉換資料和建立子集 (英文)。

  6. 呼叫 rxGetVarInfo 檢視新資料集裡的變數摘要。

rxGetVarInfo(sqlOutScoreDS2)

結果

Var 1: ccFraudLogitScore, Type: numeric
Var 2: state, Type: character
Var 3: gender, Type: character
Var 4: cardholder, Type: character
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: ccFraudProb, Type: numeric

會保留原始的 logit 分數,但新增了新的資料行 ccFraudProb,在其中 logit 分數以介於 0 和 1 之間的值代表。

請注意,因素變數已寫入 ccScoreOutput2 資料庫作為字元資料。 若要使用這些變數作為後續分析的因素,請使用參數 colInfo 來指定層級。

後續步驟