Zapytuj i modyfikuj dane SQL Server (tutorial SQL Server i RevoScaleR)

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

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

W poprzednim samouczku załadowałeś dane do SQL Server. W tym samouczku możesz eksplorować i modyfikować dane za pomocą RevoScaleR:

  • Zwróć podstawowe informacje o zmiennych
  • Tworz dane kategoryczne z surowych danych

Dane kategoryczne, czyli zmienne czynnikowe, są przydatne do eksploracyjnych wizualizacji danych. Możesz użyć ich jako danych wejściowych do histogramów, aby zobaczyć, jak wyglądają dane zmiennych.

Zapytanie o kolumny i typy

Użyj R IDE lub RGui.exe do uruchomienia skryptu R.

Najpierw zdobądź listę kolumn i ich typów danych. Możesz użyć funkcji rxGetVarInfo i określić źródło danych, które chcesz analizować. W zależności od wersji RevoScaleR, możesz też użyć rxGetVarNames.

rxGetVarInfo(data = sqlFraudDS)

Results

Var 1: custID, Type: integer
Var 2: gender, Type: integer
Var 3: state, Type: integer
Var 4: cardholder, Type: integer
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: fraudRisk, Type: integer

Tworzenie danych kategorycznych

Wszystkie zmienne są przechowywane jako liczby całkowite, ale niektóre zmienne reprezentują dane kategoryczne, zwane zmiennymi czynnikowymi w R. Na przykład stan kolumny zawiera numery używane jako identyfikatory dla 50 stanów oraz Dystrykt Kolumbii. Aby ułatwić zrozumienie danych, zastępuje się liczby listą skrótów stanowych.

W tym kroku tworzysz wektor łańcuchowy zawierający skróty, a następnie mapujesz te wartości kategoryczne na oryginalne identyfikatory liczb całkowitoliczbowych. Następnie używasz nowej zmiennej w argumencie colInfo , aby określić, że ta kolumna ma być traktowana jako czynnik. Za każdym razem, gdy analizujesz dane lub je przenosisz, używa się skrótów, a kolumna jest traktowana jako czynnik.

Mapowanie kolumny na skróty przed użyciem jej jako faktora również poprawia wydajność. Więcej informacji można znaleźć w sekcji R i optymalizacja danych.

  1. Zacznij od utworzenia zmiennej w języku R, stateAbb, i zdefiniowania wektora ciągów znaków, który ma zostać do niej przypisany, w następujący sposób.

    stateAbb <- c("AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC",
        "DE", "FL", "GA", "HI","IA", "ID", "IL", "IN", "KS", "KY", "LA",
        "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NB", "NC", "ND",
        "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI","SC",
        "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY")
    
  2. Następnie stwórz obiekt informacji kolumny, nazwany ccColInfo, który określa mapowanie istniejących wartości całkowitych na poziomy kategoryczne (skróty stanów).

    To stwierdzenie tworzy również zmienne czynnikowe dla płci i posiadacza karty.

    ccColInfo <- list(
    gender = list(
              type = "factor",
              levels = c("1", "2"),
              newLevels = c("Male", "Female")
              ),
    cardholder = list(
                  type = "factor",
                  levels = c("1", "2"),
                  newLevels = c("Principal", "Secondary")
                   ),
    state = list(
             type = "factor",
             levels = as.character(1:51),
             newLevels = stateAbb
             ),
    balance = list(type = "numeric")
    )
    
  3. Aby utworzyć źródło danych SQL Server, które korzysta z zaktualizowanych danych, wywołaj funkcję RxSqlServerData jak wcześniej, ale dodaj argument colInfo.

    sqlFraudDS <- RxSqlServerData(connectionString = sqlConnString,
    table = sqlFraudTable, colInfo = ccColInfo,
    rowsPerRead = sqlRowsPerRead)
    
    • Dla parametru tabeli wprowadź zmienną sqlFraudTable, która zawiera źródło danych, które wcześniej stworzyłeś.
    • Dla parametru colInfo wprowadź zmienną ccColInfo , która zawiera typy danych kolumn i poziomy czynników.
  4. Teraz możesz użyć funkcji rxGetVarInfo , aby zobaczyć zmienne w nowym źródle danych.

    rxGetVarInfo(data = sqlFraudDS)
    

    Results

    Var 1: custID, Type: integer
    Var 2: gender  2 factor levels: Male Female
    Var 3: state   51 factor levels: AK AL AR AZ CA ... VT WA WI WV WY
    Var 4: cardholder  2 factor levels: Principal Secondary
    Var 5: balance, Type: integer
    Var 6: numTrans, Type: integer
    Var 7: numIntlTrans, Type: integer
    Var 8: creditLine, Type: integer
    Var 9: fraudRisk, Type: integer
    

Teraz trzy wymienione przez ciebie zmienne (płeć, stan i posiadacz karty) są traktowane jako czynniki.

Następny krok