Compartilhar via


Calcular estatísticas de resumo no R (tutorial do SQL Server e do RevoScaleR)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores

Este é o tutorial 5 da série de tutoriais do RevoScaleR sobre como usar as funções do RevoScaleR com o SQL Server.

Esse tutorial usa as fontes de dados estabelecidas e os contextos de computação criados em tutoriais anteriores para executar scripts R de alta potência. Neste tutorial, você usará contextos de computação de servidor local e remoto para as seguintes tarefas:

  • Alternar o contexto de computação para o SQL Server
  • Obter estatísticas de resumo em objetos de dados remotos
  • Calcular um resumo local

Se você concluiu os tutoriais anteriores, deve ter estes contextos de computação remota: sqlCompute e sqlComputeTrace. Mais adiante, você usará sqlCompute e o contexto de computação local nos tutoriais seguintes.

Use um IDE do R ou o Rgui para executar o script R deste tutorial.

Calcular estatísticas de resumo em dados remotos

Antes de executar qualquer código R remotamente, você precisa especificar o contexto de computação remota. Todos os cálculos seguintes ocorrem no computador SQL Server especificado no parâmetro sqlCompute.

Um contexto de computação permanece ativo até você alterá-lo. No entanto, os scripts R que não podem ser executados em um contexto de servidor remoto serão executados localmente de maneira automática.

Para ver como funciona um contexto de computação, gere estatísticas de resumo na fonte de dados sqlFraudDS no SQL Server remoto. Esse objeto de fonte de dados foi criado no tutorial dois e representa a tabela ccFraudSmall no banco de dados RevoDeepDive.

  1. Alterne o contexto de computação para o sqlCompute criado no tutorial anterior:

    rxSetComputeContext(sqlCompute)
    
  2. Chame a função rxSummary e passe os argumentos necessários, como a fórmula e a fonte de dados, e atribua os resultados à variável sumOut.

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

    A linguagem R fornece muitas funções de resumo, mas rxSummary no RevoScaleR dá suporte à execução em diversos contextos de computação remota, incluindo SQL Server. Para obter informações sobre funções semelhantes, confira Resumos de dados usando o RevoScaleR.

  3. Imprima o conteúdo de sumOut no console.

    sumOut
    

    Observação

    Se você receber um erro, aguarde alguns minutos para que a execução seja concluída antes de repetir o 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

Criar um resumo local

  1. Altere o contexto de computação para fazer todo o seu trabalho localmente.

    rxSetComputeContext ("local")
    
  2. Ao extrair dados do SQL Server, muitas vezes, você pode obter um melhor desempenho aumentando o número de linhas extraídas para cada leitura, supondo que o tamanho do bloco aumentado possa ser acomodado na memória. Execute o comando a seguir para aumentar o valor do parâmetro rowsPerRead na fonte de dados. Anteriormente, o valor de rowsPerRead estava definido como 5000.

    sqlServerDS1 <- RxSqlServerData(
       connectionString = sqlConnString,
       table = sqlFraudTable,
       colInfo = ccColInfo,
       rowsPerRead = 10000)
    
  3. Chame rxSummary na nova fonte de dados.

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

    Os resultados reais devem ser iguais a quando você executa rxSummary no contexto do computador SQL Server . No entanto, a operação pode ser mais rápida ou mais lenta. Depende muito da conexão com seu banco de dados, pois os dados estão sendo transferidos para o computador local para análise.

  4. Alterne novamente para o contexto de computação remota para os próximos vários tutoriais.

    rxSetComputeContext(sqlCompute)
    

Próximas etapas