Compute samenvattende statistieken in R (SQL Server en RevoScaleR tutorial)

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

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

Deze tutorial gebruikt de gevestigde databronnen en rekencontexten die in eerdere tutorials zijn gecreëerd om krachtige R-scripts uit te voeren. In deze tutorial gebruik je lokale en externe server-computecontexten voor de volgende taken:

  • Schakel de compute-context over naar SQL Server
  • Bekijk samenvattingsstatistieken van externe dataobjecten
  • Bereken een lokale samenvatting

Als je de vorige tutorials hebt afgerond, zou je deze remote compute contexts moeten hebben: sqlCompute en sqlComputeTrace. Voortaan gebruik je sqlCompute en de lokale computecontext in volgende tutorials.

Gebruik een R-IDE of Rgui om het R-script in deze tutorial uit te voeren.

Bereken samenvattende statistieken op externe data

Voordat je R-code op afstand kunt uitvoeren, moet je de externe computecontext specificeren. Alle daaropvolgende berekeningen vinden plaats op de SQL Server-computer die is gespecificeerd in de sqlCompute-parameter.

Een compute-context blijft actief totdat je deze verandert. Echter, alle R-scripts die niet in een externe servercontext kunnen draaien, zullen automatisch lokaal draaien.

Om te zien hoe een computecontext werkt, genereer samenvattende statistieken over de sqlFraudDS-databron op de externe SQL Server. Dit databronobject is gemaakt in tutorial twee en vertegenwoordigt de ccFraudSmall-tabel in de RevoDeepDive-database.

  1. Schakel de computecontext over naar sqlCompute dat in de vorige tutorial is gemaakt:

    rxSetComputeContext(sqlCompute)
    
  2. Roep de rxSummary-functie aan en geef de vereiste argumenten door, zoals de formule en de databron, en wijs de resultaten toe aan de variabele sumOut.

    sumOut <- rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlFraudDS)
    

    De R-taal biedt veel samenvattingsfuncties, maar rxSummary in RevoScaleR ondersteunt uitvoering op verschillende externe computecontexten, waaronder SQL Server. Voor informatie over vergelijkbare functies, zie Data-samenvattingen met RevoScaleR.

  3. Print de inhoud van sumOut naar de console.

    sumOut
    

    Note

    Als je een foutmelding krijgt, wacht dan een paar minuten tot de uitvoering klaar is voordat je het commando opnieuw probeert.

Results

Summary Statistics Results for: ~gender + balance + numTrans + numIntlTrans + creditLine
Data: sqlFraudDS (RxSqlServerData Data Source)
Number of valid observations: 10000

 Name  Mean    StdDev  Min Max ValidObs    MissingObs
 balance       4075.0318 3926.558714            0   25626 100000
 numTrans        29.1061   26.619923 0     100 10000    0           100000
 numIntlTrans     4.0868    8.726757 0      60 10000    0           100000
 creditLine       9.1856    9.870364 1      75 10000    0          100000
 
 Category Counts for gender
 Number of categories: 2
 Number of valid observations: 10000
 Number of missing observations: 0

 gender Counts
  Male   6154
  Female 3846

Maak een lokale samenvatting

  1. Verander de compute-context zodat al je werk lokaal wordt gedaan.

    rxSetComputeContext ("local")
    
  2. Bij het extraheren van data uit SQL Server kun je vaak betere prestaties behalen door het aantal geëxtraheerde rijen per leesbeurt te verhogen, ervan uitgaande dat de grotere blokgrootte in het geheugen kan worden geaccommodereerd. Voer de volgende opdracht uit om de waarde van de parameter rowsPerRead van de gegevensbron te verhogen. Voorheen was de waarde van rijenPerRead ingesteld op 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Roep rxSummary aan op de nieuwe databron.

    rxSummary(formula = ~gender + balance + numTrans + numIntlTrans + creditLine, data = sqlServerDS1)
    

    De daadwerkelijke resultaten zouden hetzelfde moeten zijn als wanneer je rxSummary uitvoert in de context van de SQL Server-computer. De operatie kan echter sneller of langzamer zijn. Veel hangt af van de verbinding met je database, omdat de data wordt overgezet naar je lokale computer voor analyse.

  4. Schakel terug naar de remote compute-context voor de volgende paar tutorials.

    rxSetComputeContext(sqlCompute)
    

Volgende stap