Transformar dados usando o R (tutorial do SQL Server e RevoScaleR)
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Este é o tutorial 9 da série de tutoriais do RevoScaleR sobre como usar as funções do RevoScaleR com o SQL Server.
Neste tutorial, você aprenderá sobre as funções do RevoScaleR para transformar os dados em vários estágios da análise.
- Use rxDataStep para criar e transformar um subconjunto de dados
- Use rxImport para transformar dados em trânsito de ou para um arquivo XDF ou um quadro de dados na memória durante a importação
Embora não sejam destinadas especificamente à movimentação de dados, as funções rxSummary, rxCube, rxLinMode rxLogit dão suporte a transformações de dados.
Usar o rxDataStep para transformar variáveis
A função rxDataStep processa uma parte dos dados por vez, lendo de uma fonte de dados e gravando em outra. Você pode especificar as colunas a serem transformadas, bem como as transformações a serem carregadas, e assim por diante.
Para tornar este exemplo interessante, vamos usar uma função de outro pacote do R para transformar os dados. O pacote inicialização é um dos pacotes “recomendados”, o que significa que inicialização é incluído com cada distribuição do R, mas não é carregado automaticamente na inicialização. Portanto, o pacote já deve estar disponível na instância do SQL Server configurada para a integração do R.
No pacote inicialização, use a função inv.logit, que calcula o inverso de um logit. Ou seja, a função inv.logit converte um logit novamente para uma probabilidade na escala [0,1].
Dica
Outra maneira de fazer previsões nessa escala é definir o parâmetro type como response na chamada original à rxPredict.
Comece criando uma fonte de dados para manter os dados destinados à tabela,
ccScoreOutput
.sqlOutScoreDS <- RxSqlServerData( table = "ccScoreOutput", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
Adicione outra fonte de dados para manter os dados da tabela
ccScoreOutput2
.sqlOutScoreDS2 <- RxSqlServerData( table = "ccScoreOutput2", connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
Na nova tabela, armazene todas as variáveis da tabela
ccScoreOutput
anterior, além da variável recém-criada.Defina o contexto de computação como a instância do SQL Server .
rxSetComputeContext(sqlCompute)
Use a função rxSqlServerTableExists para verificar se a tabela de saída
ccScoreOutput2
já existe e, nesse caso, use a função rxSqlServerDropTable para excluir a tabela.if (rxSqlServerTableExists("ccScoreOutput2")) rxSqlServerDropTable("ccScoreOutput2")
Chame a função rxDataStep e especifique as transformações desejadas em uma lista.
rxDataStep(inData = sqlOutScoreDS, outFile = sqlOutScoreDS2, transforms = list(ccFraudProb = inv.logit(ccFraudLogitScore)), transformPackages = "boot", overwrite = TRUE)
Quando define as transformações aplicadas a cada coluna, você também pode especificar todos os pacotes do R adicionais necessários para executar as transformações. Para obter mais informações sobre os tipos de transformações que podem ser executadas, confira Como transformar e fazer subconjuntos de dados usando o RevoScaleR.
Chame rxGetVarInfo para exibir um resumo das variáveis no novo conjunto de dados.
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
As pontuações de logit originais são preservadas, mas uma nova coluna, ccFraudProb, foi adicionada, na qual as pontuações de logit são representadas como valores entre 0 e 1.
Observe que as variáveis de fator foram gravadas na tabela ccScoreOutput2
como dados de caractere. Para usá-las como fatores nas próximas análises, use o parâmetro colInfo para especificar os níveis.