Usar o ODBC para salvar e carregar objetos R nos Serviços de Machine Learning do SQL Server
Aplica-se a: SQL Server 2016 (13.x) e posterior
Saiba como usar o pacote RevoScaleR para armazenar objetos R serializados em uma tabela e carregar o objeto da tabela conforme necessário com os Serviços de Machine Learning do SQL Server. Ele pode ser usado ao treinar e salvar um modelo e, depois, para pontuação ou análise.
Pacote RevoScaleR
O pacote RevoScaleR inclui funções de serialização e desserialização que podem carregar objetos R de modo compacto no SQL Server e ler os objetos da tabela. Em geral, as chamadas de função usam um repositório de valor de chave simples, no qual a chave é o nome do objeto e o valor associado com a chave é o objeto varbinary de R a ser movido para dentro ou para fora de uma tabela.
Para salvar objetos do R para SQL Server diretamente de um ambiente do R, você deve:
- Estabelecer uma conexão com o SQL Server usando a fonte de dados RxOdbcData.
- Chamar as novas funções na conexão ODBC
- Opcionalmente, você pode especificar que o objeto não seja serializado. Em seguida, escolha um novo algoritmo de compactação para usar em vez do algoritmo de compactação padrão.
Por padrão, qualquer objeto que é chamado do R para ser movido para o SQL Server é serializado e compactado. Por outro lado, quando você carrega um objeto de uma tabela do SQL Server para usar em seu código de R, o objeto é desserializado e descompactado.
Listar as novas funções
A
rxWriteObject
grava um objeto de R no SQL Server usando a fonte de dados ODBC.A
rxReadObject
lê um objeto de R de um banco de dados do SQL Server, usando uma fonte de dados ODBCA
rxDeleteObject
exclui um objeto R do banco de dados do SQL Server especificado na fonte de dados ODBC. Se houver vários objetos identificados pela combinação de chave/versão, todos são excluídos.A
rxListKeys
lista todos os objetos disponíveis como pares chave-valor. Isso ajuda a determinar os nomes e as versões dos objetos de R.
Para obter ajuda detalhada sobre a sintaxe de cada função, use a Ajuda de R. Os detalhes também estão disponíveis na Referência do ScaleR.
Como armazenar objetos de R no SQL Server usando o ODBC
Este procedimento demonstra como você pode usar as novas funções para criar um modelo e salvá-lo no SQL Server.
Configure a cadeia de conexão para o SQL Server.
conStr <- 'Driver={SQL Server};Server=localhost;Database=storedb;Trusted_Connection=true'
Crie um objeto de fonte de dados rxOdbcData em R usando a cadeia de conexão.
ds <- RxOdbcData(table="robjects", connectionString=conStr)
Exclua a tabela, se ela já existir e você não desejar controlar as versões antigas dos objetos.
if(rxSqlServerTableExists(ds@table, ds@connectionString)) { rxSqlServerDropTable(ds@table, ds@connectionString) }
Defina uma tabela que pode ser usada para armazenar objetos binários.
ddl <- paste(" CREATE TABLE [", ds@table, "] ("," [id] varchar(200) NOT NULL, "," [value] varbinary(max), "," CONSTRAINT unique_id UNIQUE (id))", sep = "")
Abra a conexão ODBC para criar a tabela e, quando a instrução DDL for concluída, feche a conexão.
rxOpen(ds, "w") rxExecuteSQLDDL(ds, ddl) rxClose(ds)
Gere os objetos de R que você deseja armazenar.
infertLogit <- rxLogit(case ~ age + parity + education + spontaneous + induced, data = infert)
Use o objeto RxOdbcData criado anteriormente, para salvar o modelo no banco de dados.
rxWriteObject(ds, "logit.model", infertLogit)
Como ler objetos de R do SQL Server usando o ODBC
Este procedimento demonstra como você pode usar as novas funções para carregar um modelo do SQL Server.
Configure a cadeia de conexão para o SQL Server.
conStr2 <- 'Driver={SQL Server};Server=localhost;Database=storedb;Trusted_Connection=true'
Crie um objeto de fonte de dados rxOdbcData em R usando a cadeia de conexão.
ds <- RxOdbcData(table="robjects", connectionString=conStr2)
Leia o modelo da tabela especificando seu nome de objeto R.
infertLogit2 <- rxReadObject(ds, "logit.model")