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.
Alterne o contexto de computação para o sqlCompute criado no tutorial anterior:
rxSetComputeContext(sqlCompute)
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.
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
Altere o contexto de computação para fazer todo o seu trabalho localmente.
rxSetComputeContext ("local")
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)
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.
Alterne novamente para o contexto de computação remota para os próximos vários tutoriais.
rxSetComputeContext(sqlCompute)