Consulta e modificação dos dados do SQL Server (tutorial do SQL Server e RevoScaleR)

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

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

No tutorial anterior, carregaste os dados no SQL Server. Neste tutorial, pode explorar e modificar dados usando o RevoScaleR:

  • Devolver informação básica sobre as variáveis
  • Criar dados categóricos a partir de dados brutos

Os dados categóricos, ou variáveis fatorais, são úteis para visualizações exploratórias de dados. Pode usá-los como entradas para histogramas para ter uma ideia de como são os dados variáveis.

Consultar colunas e tipos

Use um IDE ou RGui.exe R para executar o script R.

Primeiro, obtenha uma lista das colunas e dos seus tipos de dados. Podes usar a função rxGetVarInfo e especificar a fonte de dados que queres analisar. Dependendo da sua versão do RevoScaleR, também pode usar o rxGetVarNames.

rxGetVarInfo(data = sqlFraudDS)

Results

Var 1: custID, Type: integer
Var 2: gender, Type: integer
Var 3: state, Type: integer
Var 4: cardholder, Type: integer
Var 5: balance, Type: integer
Var 6: numTrans, Type: integer
Var 7: numIntlTrans, Type: integer
Var 8: creditLine, Type: integer
Var 9: fraudRisk, Type: integer

Criar dados categóricos

Todas as variáveis são armazenadas como inteiros, mas algumas variáveis representam dados categóricos, chamados variáveis fatoriais em R. Por exemplo, o estado coluna contém números usados como identificadores para os 50 estados mais o Distrito de Columbia. Para facilitar a compreensão dos dados, substitui os números por uma lista de abreviaturas de estado.

Neste passo, cria-se um vetor string contendo as abreviaturas e depois mapeia estes valores categóricos para os identificadores inteiros originais. Depois usa a nova variável no argumento colInfo , para especificar que esta coluna seja tratada como um fator. Sempre que analisas ou moves os dados, as abreviaturas são usadas e a coluna é tratada como um fator.

Mapear a coluna para abreviaturas antes de a usar como fator melhora o desempenho também. Para mais informações, veja R e otimização de dados.

  1. Comece por criar uma variável R, stateAbb, e definir o vetor de cadeias a acrescentar, da seguinte forma.

    stateAbb <- c("AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC",
        "DE", "FL", "GA", "HI","IA", "ID", "IL", "IN", "KS", "KY", "LA",
        "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NB", "NC", "ND",
        "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI","SC",
        "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY")
    
  2. De seguida, crie um objeto de informação de coluna, chamado ccColInfo, que especifica o mapeamento dos valores inteiros existentes para os níveis categóricos (as abreviaturas de estados).

    Esta afirmação também cria variáveis fatoriais para o género e o titular do cartão.

    ccColInfo <- 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(1:51),
             newLevels = stateAbb
             ),
    balance = list(type = "numeric")
    )
    
  3. Para criar a fonte de dados do SQL Server que utiliza os dados atualizados, chame a função RxSqlServerData como antes, mas adicione o argumento colInfo.

    sqlFraudDS <- RxSqlServerData(connectionString = sqlConnString,
    table = sqlFraudTable, colInfo = ccColInfo,
    rowsPerRead = sqlRowsPerRead)
    
    • Para o parâmetro da tabela , passe a variável sqlFraudTable, que contém a fonte de dados que criou anteriormente.
    • Para o parâmetro colInfo , passe a variável ccColInfo , que contém os tipos de dados das colunas e os níveis de fatores.
  4. Agora pode usar a função rxGetVarInfo para visualizar as variáveis na nova fonte de dados.

    rxGetVarInfo(data = sqlFraudDS)
    

    Results

    Var 1: custID, Type: integer
    Var 2: gender  2 factor levels: Male Female
    Var 3: state   51 factor levels: AK AL AR AZ CA ... VT WA WI WV WY
    Var 4: cardholder  2 factor levels: Principal Secondary
    Var 5: balance, Type: integer
    Var 6: numTrans, Type: integer
    Var 7: numIntlTrans, Type: integer
    Var 8: creditLine, Type: integer
    Var 9: fraudRisk, Type: integer
    

Agora, as três variáveis que especificaste (género, estado e titular do cartão) são tratadas como fatores.

Passo seguinte