Calcular estatísticas resumidas em R (tutorial de SQL Server e RevoScaleR)

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

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

Este tutorial utiliza as fontes de dados estabelecidas e os contextos computacionais criados em tutoriais anteriores para executar scripts R potentes. Neste tutorial, irá utilizar contextos de computação de servidores locais e remotos para as seguintes tarefas:

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

Se completaste os tutoriais anteriores, deves ter estes contextos de computação remota: sqlCompute e sqlComputeTrace. Daqui para a frente, vais usar o will sqlCompute e o contexto de computação local nos tutoriais seguintes.

Usa um IDE R ou Rgui para executar o script R neste tutorial.

Cálculo de estatísticas resumidas em dados remotos

Antes de poderes executar qualquer código R remotamente, precisas de especificar o contexto de computação remota. Todos os cálculos subsequentes são realizados no computador SQL Server especificado no parâmetro sqlCompute.

Um contexto computacional mantém-se ativo até o alterares. No entanto, quaisquer scripts R que não possam correr num contexto de servidor remoto serão automaticamente executados localmente.

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

  1. Muda o contexto de computação para 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 o rxSummary no RevoScaleR suporta execução em vários contextos de computação remota, incluindo o SQL Server. Para informações sobre funções semelhantes, consulte resumos de dados usando o RevoScaleR.

  3. Imprime o conteúdo do sumOut na consola.

    sumOut
    

    Note

    Se aparecer um erro, espere alguns minutos até a execução terminar antes de tentar novamente o comando.

Results

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

Crie um resumo local

  1. Muda o contexto de computação para fazeres todo o teu trabalho localmente.

    rxSetComputeContext ("local")
    
  2. Ao extrair dados do SQL Server, muitas vezes é possível obter melhor desempenho aumentando o número de linhas extraídas por cada leitura, assumindo que o tamanho do bloco aumentado pode ser acomodado na memória. Execute o seguinte comando para aumentar o valor do parâmetro rowsPerRead na fonte de dados. Anteriormente, o valor de rowsPerRead era definido para 5000.

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

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

    Os resultados reais devem ser os mesmos que quando executas o rxSummary no contexto do computador SQL Server. No entanto, a operação pode ser mais rápida ou mais lenta. Muito depende da ligação à tua base de dados, porque os dados estão a ser transferidos para o teu computador local para análise.

  4. Volte ao contexto de computação remota para os próximos tutoriais.

    rxSetComputeContext(sqlCompute)
    

Passo seguinte