Mover dados entre o SQL Server e o arquivo XDF (Tutorial do SQL Server e RevoScaleR)
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Este é o tutorial 13 da série de tutoriais do RevoScaleR sobre como usar as funções do RevoScaleR com o SQL Server.
Neste tutorial, você aprenderá a usar um arquivo XDF para transferir dados entre os contextos de computação locais e remotos. Armazenar os dados em um arquivo XDF permite que você execute transformações nos dados.
Quando terminar, você usará os dados no arquivo para criar uma tabela SQL Server. A função rxDataStep pode aplicar transformações aos dados e executar a conversão entre quadros de dados e arquivos .xdf.
Criar uma tabela do SQL Server com base em um arquivo XDF
Para este exercício, use os dados de fraude de cartão de crédito novamente. Nesse cenário, foi solicitado que você fizesse algumas análises adicionais nos usuários nos Estados da Califórnia, Oregon e Washington. Para ser mais eficiente, você decidiu armazenar dados apenas desses estados no computador local e trabalhar apenas com as variáveis gender, cardholder, state e balance.
Use novamente a variável
stateAbb
criada anteriormente para identificar os níveis a serem incluídos e grave-os em uma nova variável,statesToKeep
.statesToKeep <- sapply(c("CA", "OR", "WA"), grep, stateAbb) statesToKeep
Resultados
AC OU WA 5 38 48 Defina os dados que deseja trazer do SQL Server usando uma consulta Transact-SQL. Posteriormente, use essa variável como o argumento inData para rxImport.
importQuery <- paste("SELECT gender,cardholder,balance,state FROM", sqlFraudTable, "WHERE (state = 5 OR state = 38 OR state = 48)")
Verifique se não há caracteres ocultos, como tabulações ou alimentações de linha.
Em seguida, defina as colunas a serem usadas ao trabalhar com os dados no R. Por exemplo, no conjunto de dados menor, você precisa ter apenas três níveis de fator, porque a consulta retorna dados de apenas três estados. Aplique a variável
statesToKeep
para identificar os níveis corretos a serem incluídos.importColInfo <- list( gender = list( type = "factor", levels = c("1", "2"), newLevels = c("Male", "Female")), cardholder = list( type = "factor", levels = c("1", "2"), newLevels = c("Principal", "Secondary")), state = list( type = "factor", levels = as.character(statesToKeep), newLevels = names(statesToKeep)) )
Defina o contexto de computação como local, porque você deseja ter todos os dados disponíveis no computador local.
rxSetComputeContext("local")
A função rxImport pode importar dados de qualquer fonte de dados com suporte para um arquivo XDF local. Usar uma cópia local dos dados é conveniente quando você deseja realizar muitas análises diferentes nos dados, mas deseja evitar a execução da mesma consulta repetidamente.
Crie o objeto de fonte de dados passando as variáveis definidas anteriormente como argumentos para RxSqlServerData.
sqlServerImportDS <- RxSqlServerData( connectionString = sqlConnString, sqlQuery = importQuery, colInfo = importColInfo)
Chame rxImport para gravar os dados em um arquivo chamado
ccFraudSub.xdf
, no diretório de trabalho atual.localDS <- rxImport(inData = sqlServerImportDS, outFile = "ccFraudSub.xdf", overwrite = TRUE)
O objeto
localDs
retornado pela função rxImport é um objeto de fonte de dados RxXdfData leve que representa o arquivo de dadosccFraud.xdf
armazenado localmente em disco.Chame rxGetVarInfo no arquivo XDF para verificar se o esquema de dados é o mesmo.
rxGetVarInfo(data = localDS)
Resultados
rxGetVarInfo(data = localDS) Var 1: gender, Type: factor, no factor levels available Var 2: cardholder, Type: factor, no factor levels available Var 3: balance, Type: integer, Low/High: (0, 22463) Var 4: state, Type: factor, no factor levels available
Agora, você pode chamar várias funções do R para analisar o objeto localDs, como faria com os dados de origem no SQL Server. Por exemplo, você pode resumir pelo gender:
rxSummary(~gender + cardholder + balance + state, data = localDS)
Próximas etapas
Esse tutorial conclui a série de tutoriais de várias partes sobre RevoScaleR e SQL Server. Ela apresentou vários conceitos de computação e relacionados a dados, oferecendo uma base para avançar com seus próprios dados e requisitos de projeto.
Para aprofundar seu conhecimento sobre o RevoScaleR, você pode voltar para a lista de tutoriais do R para percorrer os exercícios que você possa ter perdido. Como alternativa, examine os artigos de instruções no sumário para obter informações sobre tarefas gerais.