Compartir a través de


Transformación de datos mediante R (tutorial de SQL Server y RevoScaleR)

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

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

En este tutorial, obtendrá información sobre las funciones RevoScaleR para transformar los datos en distintas fases del análisis.

  • Usar rxDataStep para crear y transformar un subconjunto de datos.
  • Usar rxImport para transformar datos en tránsito hacia o desde un archivo XDF o una trama de datos en memoria durante la importación.

Aunque no son específicas para el movimiento de datos, las funciones rxSummary, rxCube, rxLinMody rxLogit admiten transformaciones de datos.

Uso de rxDataStep para transformar variables

La función rxDataStep procesa un fragmento de datos cada vez. Para ello, lo lee en un origen de datos y lo escribe en otro. Puede especificar las columnas que se van a transformar, las transformaciones que se van a cargar, etc.

Para que este ejemplo sea interesante, usaremos una función de otro paquete de R para transformar los datos. El paquete boot es uno de los paquetes "recomendados", lo que significa que boot se incluye con todas las distribuciones de R, pero no se carga automáticamente en el inicio. Por lo tanto, el paquete ya debe de estar disponible en la instancia de SQL Server configurada para la integración de R.

Desde el paquete boot, use la función inv.logit que calcula el inverso de una función logit. Es decir, la función inv.logit convierte una función logit a una probabilidad en la escala [0,1].

Sugerencia

Otra manera de obtener predicciones en esta escala sería establecer el parámetro type en response en la llamada original a rxPredict.

  1. Empiece creando un origen de datos para almacenar los datos destinados a la tabla ccScoreOutput.

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. Agregue otro origen de datos para almacenar los datos para la tabla ccScoreOutput2.

    sqlOutScoreDS2 <- RxSqlServerData( table =  "ccScoreOutput2",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    

    En la tabla nueva, almacene todas las variables de la tabla ccScoreOutput anterior, además de la variable recién creada.

  3. Establezca el contexto de proceso en la instancia de SQL Server .

    rxSetComputeContext(sqlCompute)
    
  4. Use la función rxSqlServerTableExists para comprobar si la tabla de salida ccScoreOutput2 ya existe y, de ser así, use la función rxSqlServerDropTable para eliminar la tabla.

    if (rxSqlServerTableExists("ccScoreOutput2"))     rxSqlServerDropTable("ccScoreOutput2")
    
  5. Llame a la función rxDataStep y especifique las transformaciones deseadas en una lista.

    rxDataStep(inData = sqlOutScoreDS,
        outFile = sqlOutScoreDS2,
        transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)),
        transformPackages = "boot",
        overwrite = TRUE)
    

    Al definir las transformaciones que se aplican a cada columna, también puede especificar los paquetes de R adicionales que se necesitan para realizar las transformaciones. Para obtener más información sobre los tipos de transformaciones que puede realizar, vea Cómo transformar y crear un subconjunto de datos mediante RevoScaleR.

  6. Llame a rxGetVarInfo para ver un resumen de las variables del nuevo conjunto de datos.

rxGetVarInfo(sqlOutScoreDS2)

Resultados

Var 1: ccFraudLogitScore, Type: numeric
Var 2: state, Type: character
Var 3: gender, Type: character
Var 4: cardholder, Type: character
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: ccFraudProb, Type: numeric

Las puntuaciones originales de la función logit se conservan, pero se ha agregado una nueva columna, ccFraudProb, en la que las puntuaciones de la función logit se representan como valores comprendidos entre 0 y 1.

Observe que las variables de factor se han escrito en la tabla ccScoreOutput2 como datos de caracteres. Para usarlos como factores en análisis posteriores, use el parámetro colInfo para especificar los niveles.

Pasos siguientes