Condividi tramite


Elaborare statistiche di riepilogo in R (esercitazione su SQL Server e RevoScaleR)

Si applica a: SQL Server 2016 (13.x) e versioni successive

Questa è l'esercitazione 5 della serie di esercitazioni per RevoScaleR dedicate all'uso delle funzioni di RevoScaleR con SQL Server.

In questa esercitazione vengono usati le origini dati prestabilite e i contesti di calcolo creati nelle esercitazioni precedenti per eseguire script R ad alta potenza. In questa esercitazione si useranno contesti di calcolo di server locali e remoti per le attività seguenti:

  • Impostare il contesto di calcolo su SQL Server
  • Ottenere statistiche di riepilogo sui Remote Data Object
  • Elaborare un riepilogo locale

Se sono state completate le esercitazioni precedenti, dovrebbero essere disponibili i contesti di calcolo remoti seguenti: sqlCompute e sqlComputeTrace. Il contesto di calcolo sqlCompute e il contesto di calcolo locale verranno usati nelle esercitazioni successive.

In questa esercitazione usare un'IDE R o Rgui per eseguire lo script R.

Calcolare statistiche di riepilogo sui dati remoti

Prima di eseguire qualsiasi codice R in remoto, è necessario specificare il contesto di calcolo remoto. Tutti i calcoli successivi si svolgono nel computer SQL Server indicato nel parametro sqlCompute.

Un contesto di calcolo resta attivo fino a quando non lo si modifica. Tuttavia, qualsiasi script R non eseguibile in un contesto server remoto verrà automaticamente eseguito in locale.

Per vedere come funziona un contesto di calcolo, generare statistiche di riepilogo sull'origine dati sqlFraudDS nell'istanza remota di SQL Server. Questo oggetto origine dati è stato creato nell'esercitazione 2 e rappresenta la tabella ccFraudSmall del database RevoDeepDive.

  1. Impostare il contesto di calcolo sul contesto sqlCompute creato nell'esercitazione precedente:

    rxSetComputeContext(sqlCompute)
    
  2. Chiamare la funzione rxSummary e passare gli argomenti obbligatori, ad esempio la formula e l'origine dati, e assegnare i risultati alla variabile sumOut.

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

    Con il linguaggio R sono disponibili molte funzioni di riepilogo. La funzione rxSummary in RevoScaleR supporta tuttavia l'esecuzione in diversi contesti remoti, tra cui SQL Server. Per informazioni sulle funzioni simili, vedere Come riepilogare i dati tramite RevoScaleR.

  3. Stampare il contenuto di sumOut nella console.

    sumOut
    

    Nota

    Se si riceve un errore, attendere alcuni minuti per essere certi che l'esecuzione sia completata prima di riprovare a eseguire il comando.

Risultati

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

Creare un riepilogo locale

  1. Modificare il contesto di calcolo per eseguire il lavoro localmente .

    rxSetComputeContext ("local")
    
  2. Quando si estraggono dati da SQL Server, per ottenere prestazioni migliori è possibile aumentare il numero di righe estratte per ogni lettura, supponendo che la maggiore dimensione del blocco possa essere adattata in memoria. Eseguire il comando seguente per aumentare il valore del parametro rowsPerRead nell'origine dati. In precedenza, il valore di rowsPerRead era impostato su 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Chiamare rxSummary nella nuova origine dati.

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

    I risultati effettivi devono corrispondere a quelli ottenuti con l'esecuzione di rxSummary nel contesto del computer con SQL Server. L'operazione potrebbe tuttavia essere più veloce o più lenta a seconda del tipo di connessione al database. Per essere analizzati, i dati vengono infatti trasferiti nel computer locale.

  4. Tornare al contesto di calcolo remoto per affrontare le esercitazioni successive.

    rxSetComputeContext(sqlCompute)
    

Passaggi successivi