Transformacja danych za pomocą R (tutorial SQL Server i RevoScaleR)

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje

To jest 9. samouczek z serii tutoriali RevoScaleR, jak korzystać z funkcji RevoScaleR z SQL Server.

W tym samouczku poznasz funkcje RevoScaleR do transformacji danych na różnych etapach analizy.

  • Użyj rxDataStep do tworzenia i transformacji podzbioru danych
  • Użyj rxImport do transformacji danych w trakcie transportu do lub z pliku XDF lub ramki danych w pamięci podczas importu

Chociaż nie są to specyficzne dla ruchu danych, funkcje rxSummary, rxCube, rxLinMod i rxLogit obsługują transformacje danych.

Użyj rxDataStep do transformacji zmiennych

Funkcja rxDataStep przetwarza dane po jednym fragmencie, odczytując z jednego źródła danych i zapisując do innego. Możesz określić kolumny do transformacji, transformacje do ładowania i tak dalej.

Aby uczynić ten przykład ciekawym, użyjmy funkcji z innego pakietu R do transformacji danych. Pakiet boot jest jednym z "zalecanych" pakietów, co oznacza, że boot jest dołączony do każdej dystrybucji R, ale nie jest automatycznie ładowany przy starcie. Dlatego pakiet powinien być już dostępny na instancji SQL Server skonfigurowanej pod integrację z R.

Z pakietu startowego użyj funkcji inv.logit, która oblicza odwrotność logit. To znaczy, funkcja inv.logit przekształca logit z powrotem w prawdopodobieństwo w skali [0,1].

Wskazówka

Innym sposobem na uzyskanie predykcji w tej skali byłoby ustawienie parametru typu na odpowiedź w oryginalnym wywołaniu rxPredict.

  1. Zacznij od stworzenia źródła danych, które przechowują dane przeznaczone do tabeli. ccScoreOutput

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. Dodaj kolejne źródło danych, które przechowuje dane dla tabeli ccScoreOutput2.

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

    W nowej tabeli przechowuj wszystkie zmienne z poprzedniej ccScoreOutput tabeli oraz nowo utworzoną zmienną.

  3. Ustaw kontekst obliczeniowy na instancję SQL Server.

    rxSetComputeContext(sqlCompute)
    
  4. Użyj funkcji rxSqlServerTableExists , aby sprawdzić, czy tabela ccScoreOutput2 wyjściowa już istnieje; a jeśli tak, użyj funkcji rxSqlServerDropTable , aby usunąć tabelę.

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. Wołaj funkcję rxDataStep i określaj pożądane transformacje w liście.

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

    Definiując transformacje stosowane do każdej kolumny, możesz także określić dodatkowe pakiety R potrzebne do wykonania transformacji. Aby uzyskać więcej informacji o typach transformacji, które możesz wykonać, zobacz Jak transformować i podzestawiać dane za pomocą RevoScaleR.

  6. Zadzwoń do rxGetVarInfo , aby zobaczyć podsumowanie zmiennych w nowym zbiorze danych.

rxGetVarInfo(sqlOutScoreDS2)

Results

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

Oryginalne wyniki logitów zostały zachowane, ale dodano nową kolumnę ccFraudProb, w której wyniki logitów są reprezentowane jako wartości od 0 do 1.

Zauważ, że zmienne czynnikowe zostały zapisane w tabeli ccScoreOutput2 jako dane znakowe. Aby wykorzystać je jako czynniki w kolejnych analizach, użyj parametru colInfo do określenia poziomów.

Następny krok