Condividi tramite


Visualizzare i dati di SQL Server con R (esercitazione su SQL Server e RevoScaleR)

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

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

In questa esercitazione si useranno le funzioni R per visualizzare la distribuzione dei valori nella colonna creditLine in base al sesso.

  • Creare variabili min-max per gli input dell'istogramma
  • Visualizzare i dati in un istogramma usando la funzione rxHistogram di RevoScaleR
  • Visualizzare i dati con i tracciati a dispersione usando la funzione levelplot del pacchetto lattice incluso nella distribuzione di R

Come dimostra questa esercitazione, è possibile combinare funzioni open source e specifiche di Microsoft nello stesso script.

Aggiungere valori minimi e massimi

Le statistiche di riepilogo calcolate nell'esercitazione precedente hanno restituito informazioni utili sui dati che è possibile inserire nell'origine dati per ulteriori calcoli. Ad esempio, i valori minimo e massimo possono essere usati per calcolare istogrammi. In questo esercizio, aggiungere i valori minimo e massimo all'origine dati RxSqlServerData.

  1. Per iniziare si configurano alcune variabili temporanee.

    sumDF <- sumOut$sDataFrame
    var <- sumDF$Name
    
  2. Usare la variabile ccColInfo creata nell'esercitazione precedente per definire le colonne nell'origine dati.

    Aggiungere nuove colonne calcolate (numTrans, numIntlTranse creditLine) alla raccolta di colonne per eseguire l'override della definizione originale. Lo script seguente aggiunge fattori basati sui valori minimo e massimo, ottenuti da sumOut, che archivia l'output in memoria di rxSummary.

    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"),
        numTrans = list(type = "factor", 
          levels = as.character(sumDF[var == "numTrans", "Min"]:sumDF[var == "numTrans", "Max"])),
        numIntlTrans = list(type = "factor",  
            levels = as.character(sumDF[var == "numIntlTrans", "Min"]:sumDF[var =="numIntlTrans", "Max"])),
        creditLine = list(type = "numeric")
            )
    
  3. Dopo aver aggiornato la raccolta di colonne, applicare l'istruzione seguente per creare una versione aggiornata dell'origine dati SQL Server definita in precedenza.

    sqlFraudDS <- RxSqlServerData(
        connectionString = sqlConnString,
        table = sqlFraudTable,
        colInfo = ccColInfo,
        rowsPerRead = sqlRowsPerRead)
    

    L'origine dati sqlFraudDS include ora le nuove colonne aggiunte mediante ccColInfo.

A questo punto, le modifiche interessano solo l'oggetto origine dati in R, mentre nella tabella di database non sono stati ancora scritti nuovi dati. È tuttavia possibile usare i dati acquisiti nella variabile sumOut per creare visualizzazioni e riepiloghi.

Suggerimento

Se non si ricorda quale contesto di calcolo si sta usando, eseguire rxGetComputeContext(). Il valore restituito "RxLocalSeq Compute Context" indica che si sta usando il contesto di calcolo locale.

Visualizzare i dati tramite rxHistogram

  1. Usare il codice di R seguente per chiamare la funzione rxHistogram e per passare una formula e l'origine dati. È possibile innanzitutto eseguire questa procedura localmente per visualizzare i risultati previsti e il tempo necessario.

    rxHistogram(~creditLine|gender, data = sqlFraudDS,  histType = "Percent")
    

    Internamente, rxHistogram chiama la funzione rxCube inclusa nel pacchetto RevoScaleR . rxCube restituisce un singolo elenco, o frame di dati, contenente una colonna per ogni variabile specificata nella formula, oltre a una colonna di conteggi.

  2. A questo punto, impostare il contesto di calcolo per il computer SQL Server remoto ed eseguire di nuovo rxHistogram.

    rxSetComputeContext(sqlCompute)
    rxHistogram(~creditLine|gender, data = sqlFraudDS,  histType = "Percent")
    
  3. I risultati sono esattamente gli stessi perché si sta usando la stessa origine dati, ma nel secondo passaggio i calcoli vengono eseguiti sul server remoto. I risultati vengono poi restituiti alla workstation locale per eseguire il tracciato.

Risultati dell'istogramma

Visualizzare i dati con tracciati a dispersione

I tracciati a dispersione vengono spesso usati durante l'esplorazione dei dati per confrontare la relazione tra due variabili. A questo scopo è possibile usare i pacchetti R predefiniti, con gli input forniti dalle funzioni RevoScaleR.

  1. Chiamare la funzione rxCube per calcolare la media di fraudRisk per ogni combinazione di numTrans e numIntlTrans:

    cube1 <- rxCube(fraudRisk~F(numTrans):F(numIntlTrans),  data = sqlFraudDS)
    

    Per specificare i gruppi usati per il calcolo delle medie, usare la notazione F() . In questo esempio, F(numTrans):F(numIntlTrans) indica che i numeri interi nelle variabili numTrans e numIntlTrans devono essere considerati come variabili di categoria, con un livello per ogni valore intero.

    Il valore restituito predefinito di rxCube è un oggetto rxCubeche rappresenta una tabulazione incrociata.

  2. Chiamare la funzione rxResultsDF per convertire i risultati in un frame di dati che può essere facilmente usato in una delle funzioni di tracciato standard di R.

    cubePlot <- rxResultsDF(cube1)
    

    La funzione rxCube include l'argomento facoltativo returnDataFrame = TRUE, che può essere usato per convertire direttamente i risultati in un frame di dati. Ad esempio:

    print(rxCube(fraudRisk~F(numTrans):F(numIntlTrans), data = sqlFraudDS, returnDataFrame = TRUE))

    L'output di rxResultsDF è comunque più chiaro e mantiene i nomi delle colonne di origine. È possibile eseguire la funzione head(cube1) seguita da head(cubePlot) per confrontare l'output.

  3. Creare una mappa termica usando la funzione levelplot del pacchetto lattice incluso in tutte le distribuzioni di R.

    levelplot(fraudRisk~numTrans*numIntlTrans, data = cubePlot)
    

    Risultati

    Risultati del tracciato a dispersione

Da questa analisi veloce è possibile notare che il rischio di frode aumenta sia con il numero di transazioni che con il numero di transazioni internazionali.

Per altre informazioni sulla funzione rxCube e sulle funzioni a campi incrociati in generale, vedere Come riepilogare i dati tramite RevoScaleR.

Passaggi successivi