Compartir vía


Estadísticas de resumen de proceso en R (tutorial de SQL Server y RevoScaleR)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores

Este es el tutorial 5 de la serie de tutoriales de RevoScaleR sobre el uso de las funciones de RevoScaleR con SQL Server.

En este tutorial se usan los orígenes de datos establecidos y los contextos de proceso creados en tutoriales anteriores para ejecutar scripts de R de alta eficacia. En este tutorial, usará contextos de proceso de servidores locales y remotos para estas tareas:

  • Cambio del contexto de proceso a SQL Server
  • Obtener estadísticas de resumen sobre objetos de datos remotos
  • Procesar un resumen local

Si ha completado los tutoriales anteriores, debería tener estos contextos de proceso remotos: sqlCompute y sqlComputeTrace. Más adelante, usará sqlCompute y el contexto de proceso local en tutoriales posteriores.

Use un IDE de R o Rgui para ejecutar el script de R en este tutorial.

Procesar estadísticas de resumen en datos remotos

Antes de ejecutar cualquier código R de forma remota, debe especificar el contexto de proceso remoto. Todos los procesos posteriores tienen lugar en el equipo SQL Server especificado en el parámetro sqlCompute.

Un contexto de proceso permanece activo hasta que se cambia. Pero todos los scripts de R que no se puedan ejecutar en un contexto de servidor remoto se ejecutarán localmente de forma automática.

Para ver cómo funciona un contexto de proceso, genere estadísticas de resumen en el origen de datos sqlFraudDS en el servidor SQL Server remoto. Este objeto de origen de datos se creó en el tutorial dos y representa la tabla ccFraudSmall en la base de datos RevoDeepDive.

  1. Cambie el contexto de proceso a sqlCompute creado en el tutorial anterior:

    rxSetComputeContext(sqlCompute)
    
  2. Llame a la función rxSummary y pase los argumentos necesarios, como la fórmula y el origen de datos, y asigne los resultados a la variable sumOut.

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

    El lenguaje R proporciona muchas funciones de resumen, pero rxSummary en RevoScaleR admite la ejecución en varios contextos de proceso remotos, incluido SQL Server. Para saber más sobre funciones similares, vea Resúmenes de datos mediante RevoScaleR.

  3. Imprima el contenido de sumOut en la consola.

    sumOut
    

    Nota

    Si recibe un error, espere unos minutos a que finalice la ejecución antes de volver a intentar el comando.

Resultados

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

Crear un resumen local

  1. Cambie el contexto de proceso para hacer todo el trabajo localmente.

    rxSetComputeContext ("local")
    
  2. Al extraer datos de SQL Server, a menudo puede obtener un mejor rendimiento si aumenta el número de filas extraídas para cada lectura, suponiendo que haya espacio para el tamaño de bloque ampliado en la memoria. Ejecute este comando para aumentar el valor del parámetro rowsPerRead en el origen de datos. Antes, el valor de rowsPerRead estaba establecido en 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Llame a rxSummary en el nuevo origen de datos.

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

    Los resultados actuales deben ser los mismos que cuando ejecuta rxSummary en el contexto del equipo de SQL Server . En cambio, la operación puede ser más rápida o más lenta. Depende en gran medida de la conexión a la base de datos, ya que los datos se transfieren al equipo local para el análisis.

  4. Vuelva al contexto de proceso remoto para los siguientes tutoriales.

    rxSetComputeContext(sqlCompute)
    

Pasos siguientes