Przenoszenie danych między SQL Server a plikiem XDF (tutorial SQL Server i RevoScaleR)

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

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

W tym samouczku nauczysz się, jak używać pliku XDF do przesyłania danych między zdalnym a lokalnym kontekstem obliczeniowym. Przechowywanie danych w pliku XDF pozwala na przeprowadzanie transformacji na danych.

Po zakończeniu użycia danych z pliku utworzysz nową tabelę SQL Server. Funkcja rxDataStep może stosować przekształcenia do danych oraz wykonywać konwersję między ramkami danych a plikami .xdf.

Utworzenie tabeli SQL Server z pliku XDF

W tym ćwiczeniu ponownie używasz danych o oszustwach kart kredytowych. W tym scenariuszu poproszono cię o dodatkowe analizy użytkowników w stanach Kalifornia, Oregon i Waszyngton. Aby być bardziej efektywnym, postanowiłeś przechowywać dane tylko dla tych stanów na swoim komputerze lokalnym i pracować tylko ze zmiennymi: płeć, posiadacz karty, stan i saldo.

  1. Ponownie użyj zmiennej, którą stateAbb wcześniej stworzyłeś, aby zidentyfikować poziomy do uwzględnienia i zapisz je do nowej zmiennej, statesToKeep.

    statesToKeep <- sapply(c("CA", "OR", "WA"), grep, stateAbb)
    statesToKeep
    

    Results

    urząd certyfikacji OR WA
    5 38 48
  2. Zdefiniuj dane, które chcesz przenieść z SQL Server, używając zapytania Transact-SQL. Później używasz tej zmiennej jako argumentu inData dla rxImport.

    importQuery <- paste("SELECT gender,cardholder,balance,state FROM",  sqlFraudTable,  "WHERE (state = 5 OR state = 38 OR state = 48)")
    

    Upewnij się, że w zapytaniu nie ma ukrytych znaków, takich jak znaki nowego wiersza lub tabulatory.

  3. Następnie zdefiniuj kolumny, których używasz podczas pracy z danymi w R. Na przykład w mniejszym zbiorze danych potrzebne są tylko poziomy trzech czynników, ponieważ zapytanie zwraca dane tylko dla trzech stanów. Zastosuj zmienną statesToKeep , aby zidentyfikować odpowiednie poziomy do uwzględnienia.

    importColInfo <- 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(statesToKeep), newLevels = names(statesToKeep))
            )
    
  4. Ustaw kontekst obliczeniowy na lokalny, ponieważ chcesz, aby wszystkie dane były dostępne na twoim komputerze lokalnym.

    rxSetComputeContext("local")
    

    Funkcja rxImport może importować dane z dowolnego obsługiwanego źródła danych do lokalnego pliku XDF. Korzystanie z lokalnej kopii danych jest wygodne, gdy chcesz przeprowadzić wiele różnych analiz, ale chcesz uniknąć ciągłego uruchamiania tego samego zapytania.

  5. Utwórz obiekt źródła danych, przekazując zmienne wcześniej zdefiniowane jako argumenty do RxSqlServerData.

    sqlServerImportDS <- RxSqlServerData(
        connectionString = sqlConnString,
        sqlQuery = importQuery,
        colInfo = importColInfo)
    
  6. Wywołaj rxImport , aby zapisać dane do pliku o nazwie ccFraudSub.xdf, w aktualnym katalogu roboczym.

    localDS <- rxImport(inData = sqlServerImportDS,
        outFile = "ccFraudSub.xdf",
        overwrite = TRUE)
    

    Obiekt zwracany localDs przez funkcję rxImport to lekki obiekt źródłowy RxXdfData , który reprezentuje plik danych przechowywany ccFraud.xdf lokalnie na dysku.

  7. Wywołaj rxGetVarInfo dla pliku XDF, aby sprawdzić, czy schemat danych jest taki sam.

    rxGetVarInfo(data = localDS)
    

    Results

    rxGetVarInfo(data = localDS)
    Var 1: gender, Type: factor, no factor levels available
    Var 2: cardholder, Type: factor, no factor levels available
    Var 3: balance, Type: integer, Low/High: (0, 22463)
    Var 4: state, Type: factor, no factor levels available
    
  8. Teraz możesz wywoływać różne funkcje R, aby analizować obiekt localDS, tak jak robisz to z danymi źródłowymi w SQL Server. Na przykład można podsumować według płci:

    rxSummary(~gender + cardholder + balance + state, data = localDS)
    

Następny krok

Ten samouczek kończy wieloczęściową serię tutoriali na temat RevoScaleR i SQL Server. Wprowadziło cię w liczne koncepcje związane z danymi i obliczeniami, dając podstawę do realizacji własnych wymagań dotyczących danych i projektów.

Aby pogłębić swoją wiedzę o RevoScaleR, możesz wrócić do listy tutoriali R, aby przejść przez ćwiczenia, które mogłeś pominąć. Alternatywnie, zapoznaj się z artykułami instruktażowymi w spisie treści, aby uzyskać informacje o ogólnych zadaniach.