Compartilhar via


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.

  1. Comece criando uma fonte de dados para manter os dados destinados à tabela, ccScoreOutput.

    sqlOutScoreDS <- RxSqlServerData( table =  "ccScoreOutput",  connectionString = sqlConnString, rowsPerRead = sqlRowsPerRead )
    
  2. 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.

  3. Defina o contexto de computação como a instância do SQL Server .

    rxSetComputeContext(sqlCompute)
    
  4. 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")
    
  5. 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.

  6. 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.

Próximas etapas