Carregar dados na memória usando o rxImport (SQL Server e tutorial do RevoScaleR)

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

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

Neste tutorial, vais aprender a obter dados do SQL Server e, depois, usar a função rxImport para colocar os dados de interesse num ficheiro local. Dessa forma, pode analisá-lo repetidamente no contexto de computação local, sem ter de voltar a consultar a base de dados.

A função rxImport pode ser usada para mover dados de uma fonte de dados para um quadro de dados na memória de sessão, ou para um ficheiro XDF no disco. Se não especificar um ficheiro como destino, os dados são colocados na memória como um quadro de dados.

Extrair um subconjunto de dados do SQL Server para a memória local

Decidiu que quer examinar apenas os indivíduos de alto risco com mais detalhe. A tabela de origem no SQL Server é grande, por isso queres obter informação apenas sobre os clientes de maior risco. Depois carregas esses dados numa frame de dados na memória da estação de trabalho local.

  1. Reinicie o contexto de computação para a sua estação de trabalho local.

    rxSetComputeContext("local")
    
  2. Crie um novo objeto fonte de dados do SQL Server, fornecendo uma instrução SQL válida no parâmetro sqlQuery. Este exemplo obtém um subconjunto das observações com as pontuações de risco mais altas. Assim, apenas os dados de que realmente precisa são colocados na memória local.

    sqlServerProbDS \<- RxSqlServerData(
        sqlQuery = paste("SELECT * FROM ccScoreOutput2",
        "WHERE (ccFraudProb > .99)"),
        connectionString = sqlConnString)
    
  3. Chame a função rxImport para ler os dados numa frame de dados na sessão local R.

    highRisk <- rxImport(sqlServerProbDS)
    

    Se a operação foi bem sucedida, deverá ver uma mensagem de estado como esta: "Linhas lidas: 35, Total de linhas processadas: 35, Tempo total do bloco: 0,036 segundos"

  4. Agora que as observações de alto risco estão numa trama de dados em memória, pode usar várias funções R para manipular a trama de dados. Por exemplo, pode ordenar os clientes pela sua pontuação de risco e imprimir uma lista dos clientes que representam o maior risco.

    orderedHighRisk <- highRisk[order(-highRisk$ccFraudProb),]
    row.names(orderedHighRisk) <- NULL
    head(orderedHighRisk)
    

Results

ccFraudLogitScore   state gender cardholder balance numTrans numIntlTrans creditLine ccFraudProb1
9.786345    SD   Male  Principal   23456       25            5 75   0.99994382
9.433040    FL Female  Principal   20629       24           28 75   0.99992003
8.556785    NY Female  Principal   19064       82           53 43   0.99980784
8.188668    AZ Female  Principal   19948       29            0 75   0.99972235
7.551699    NY Female  Principal   11051       95            0 75   0.99947516
7.335080    NV   Male  Principal   21566        4            6  75   0.9993482

Mais sobre o rxImport

Podes usar o rxImport não só para mover dados, mas também para transformar dados no processo de leitura. Por exemplo, pode especificar o número de caracteres para colunas de largura fixa, fornecer uma descrição das variáveis, definir níveis para colunas de fator e até criar novos níveis para usar após a importação.

A função rxImport atribui nomes de variáveis às colunas durante o processo de importação, mas pode indicar novos nomes de variáveis usando o parâmetro colInfo , ou alterar os tipos de dados usando o parâmetro colClasses .

Ao especificar operações adicionais no parâmetro transforms , pode fazer processamento elementar em cada bloco de dados lido.

Passo seguinte