Laad data in het geheugen met rxImport (SQL Server en RevoScaleR-tutorial)

Van toepassing op: SQL Server 2016 (13.x) en latere versies

Dit is tutorial 10 van de RevoScaleR-tutorialserie over hoe je RevoScaleR-functies gebruikt met SQL Server.

In deze tutorial leer je hoe je data uit SQL Server haalt, en gebruik je vervolgens de rxImport-functie om de data van belang in een lokaal bestand te zetten. Op die manier kun je het herhaaldelijk analyseren in de lokale computecontext, zonder de database opnieuw te hoeven navragen.

De rxImport-functie kan worden gebruikt om gegevens van een databron naar een dataframe in het sessiegeheugen te verplaatsen, of naar een XDF-bestand op de schijf. Als je een bestand niet als bestemming specificeert, wordt de data als een dataframe in het geheugen geplaatst.

Haal een subset van de data uit SQL Server naar het lokale geheugen

Je hebt besloten dat je alleen de risicovolle personen in meer detail wilt onderzoeken. De brontabel in SQL Server is groot, dus je wilt informatie krijgen over alleen de risicovolle klanten. Vervolgens laad je die data in een dataframe in het geheugen van het lokale werkstation.

  1. Stel de computecontext opnieuw in op je lokale werkstation.

    rxSetComputeContext("local")
    
  2. Maak een nieuw SQL Server databronobject aan, dat een geldige SQL-instructie in de sqlQuery-parameter geeft. Dit voorbeeld krijgt een subset van de observaties met de hoogste risicoscores. Op die manier wordt alleen de data die je echt nodig hebt in lokaal geheugen opgeslagen.

    sqlServerProbDS \<- RxSqlServerData(
        sqlQuery = paste("SELECT * FROM ccScoreOutput2",
        "WHERE (ccFraudProb > .99)"),
        connectionString = sqlConnString)
    
  3. Roep de functie rxImport aan om de data in een dataframe in de lokale R-sessie te lezen.

    highRisk <- rxImport(sqlServerProbDS)
    

    Als de operatie succesvol was, zou je een statusbericht moeten zien zoals deze: "Rijen gelezen: 35, Totaal aantal bewerkte rijen: 35, Totale Chunk-tijd: 0,036 seconden"

  4. Nu de risicovolle waarnemingen in een in-memory dataframe zitten, kun je verschillende R-functies gebruiken om het dataframe te manipuleren. Je kunt bijvoorbeeld klanten bestellen op hun risicoscore en een lijst afdrukken van de klanten die het hoogste risico vormen.

    orderedHighRisk <- highRisk[order(-highRisk$ccFraudProb),]
    row.names(orderedHighRisk) <- NULL
    head(orderedHighRisk)
    

Results

ccFraudLogitScore   state gender cardholder balance numTrans numIntlTrans creditLine ccFraudProb1
9.786345    SD   Male  Principal   23456       25            5 75   0.99994382
9.433040    FL Female  Principal   20629       24           28 75   0.99992003
8.556785    NY Female  Principal   19064       82           53 43   0.99980784
8.188668    AZ Female  Principal   19948       29            0 75   0.99972235
7.551699    NY Female  Principal   11051       95            0 75   0.99947516
7.335080    NV   Male  Principal   21566        4            6  75   0.9993482

Meer over rxImport

Je kunt rxImport niet alleen gebruiken om data te verplaatsen, maar ook om data te transformeren tijdens het lezen. Je kunt bijvoorbeeld het aantal tekens voor kolommen met vaste breedte specificeren, een beschrijving van de variabelen geven, niveaus instellen voor factorkolommen en zelfs nieuwe niveaus aanmaken om na importeren te gebruiken.

De rxImport-functie wijst variabelenamen toe aan de kolommen tijdens het importproces, maar je kunt nieuwe variabelenamen aangeven met de colInfo-parameter , of datatypes wijzigen met de colClasses-parameter .

Door extra bewerkingen in de transformatieparameter te specificeren, kun je elementaire verwerking uitvoeren op elk gelezen datablok.

Volgende stap