Início Rápido: executar scripts simples do R com o aprendizado de máquina do SQL
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada de SQL do Azure
Neste início rápido, você executará um conjunto de scripts simples do R usando os Serviços de Machine Learning do SQL Server ou em Clusters de Big Data. Você aprenderá a usar o procedimento armazenado sp_execute_external_script para executar o script em uma instância do SQL Server.
Neste início rápido, você executará um conjunto de scripts R simples usando os Serviços de Machine Learning do SQL Server. Você aprenderá a usar o procedimento armazenado sp_execute_external_script para executar o script em uma instância do SQL Server.
Neste início rápido, você executará um conjunto de scripts simples do R usando o SQL Server R Services. Você aprenderá a usar o procedimento armazenado sp_execute_external_script para executar o script em uma instância do SQL Server.
Neste início rápido, você executará um conjunto de scripts R simples usando os Serviços de Machine Learning de Instância Gerenciada de SQL do Azure. Você aprenderá a usar o procedimento armazenado sp_execute_external_script para executar o script no banco de dados.
Pré-requisitos
Para executar este início rápido, você precisará dos pré-requisitos a seguir.
- Serviços de Machine Learning do SQL Server. Para instalar os Serviços de Machine Learning, confira o Guia de instalação do Windows ou o Guia de instalação do Linux. Você também pode habilitar Serviços de Machine Learning em Clusters de Big Data do SQL Server.
- Serviços de Machine Learning do SQL Server. Para instalar os Serviços de Machine Learning, confira o Guia de instalação do Windows.
- SQL Server 2016 R Services. Para instalar o R Services, confira o Guia de instalação do Windows.
- Serviços de Machine Learning da Instância Gerenciada de SQL do Azure. Para obter informações, confira a Visão geral dos Serviços de Machine Learning da Instância Gerenciada de SQL do Azure.
- Uma ferramenta para executar consultas SQL que contenham scripts do R. Este início rápido usa o Azure Data Studio.
Executar um script simples
Para executar um script R, você o passará como um argumento para o procedimento armazenado do sistema, sp_execute_external_script. Esse procedimento armazenado do sistema inicia o runtime de R, transmite dados para R, gerencia as sessões de usuário de R com segurança e retorna todos os resultados para o cliente.
Nas etapas a seguir, você executará este exemplo de script do R:
a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
Abra o Azure Data Studio e conecte-se ao servidor.
Passe o script R completo para o procedimento armazenado
sp_execute_external_script
.O script é passado por meio do argumento
@script
. Tudo dentro do argumento@script
precisa ser código R válido.EXECUTE sp_execute_external_script @language = N'R' , @script = N' a <- 1 b <- 2 c <- a/b d <- a*b print(c(c, d)) '
O resultado correto é calculado e a função R
print
retorna o resultado na janela Mensagens.O resultado deve ser semelhante ao mostrado a seguir.
Resultados
STDOUT message(s) from external script: 0.5 2
Executar um script de Olá, Mundo
Um script de exemplo típico é aquele que apenas gera a cadeia de caracteres "Olá, Mundo". Execute o comando a seguir.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'OutputDataSet<-InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
As entradas para o procedimento armazenado sp_execute_external_script
incluem:
Entrada | Descrição |
---|---|
@language | define a extensão da linguagem a ser chamada, neste caso, R |
@script | define os comandos passados para o runtime do R. O seu script R inteiro deve ser colocado neste argumento como texto Unicode. Você também pode adicionar texto a uma variável do tipo nvarchar e chamar a variável |
@input_data_1 | dados retornados pela consulta, transmitidos ao runtime do R, que retorna os dados como uma estrutura de dados |
WITH RESULT SETS | cláusula que define o esquema da tabela de dados retornada, adicionando "Olá, Mundo" como o nome da coluna, int como o tipo de dados |
O comando gera o seguinte texto:
Olá, Mundo |
---|
1 |
Use entradas e saídas
Por padrão, sp_execute_external_script
aceita um único conjunto de dados como entrada, que normalmente você fornece na forma de uma consulta SQL válida. Em seguida, ele retorna uma única estrutura de dados do R como saída.
Por enquanto, usaremos as variáveis de entrada e saída padrão de sp_execute_external_script
: InputDataSet e OutputDataSet.
Crie uma pequena tabela de dados de teste.
CREATE TABLE RTestData (col1 INT NOT NULL) INSERT INTO RTestData VALUES (1); INSERT INTO RTestData VALUES (10); INSERT INTO RTestData VALUES (100); GO
Use a instrução
SELECT
para consultar a tabela.SELECT * FROM RTestData
Resultados
Execute o script R a seguir. Ele recupera os dados da tabela usando a instrução
SELECT
, passa-os pelo runtime do R e retorna os dados como uma estrutura de dados. A cláusulaWITH RESULT SETS
define o esquema da tabela de dados retornada para o SQL, adicionando o nome de coluna NewColName.EXECUTE sp_execute_external_script @language = N'R' , @script = N'OutputDataSet <- InputDataSet;' , @input_data_1 = N'SELECT * FROM RTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));
Resultados
Agora, vamos alterar os nomes das variáveis de entrada e de saída. Os nomes padrão das variáveis de entrada e de saída são InputDataSet e OutputDataSet, respectivamente. Este script altera os nomes para SQL_in e SQL_out:
EXECUTE sp_execute_external_script @language = N'R' , @script = N' SQL_out <- SQL_in;' , @input_data_1 = N' SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));
Observe que R diferencia maiúsculas de minúsculas. As variáveis de entrada e saída usadas no script R (SQL_out, SQL_in) precisam corresponder aos nomes definidos com
@input_data_1_name
e@output_data_1_name
, incluindo maiúsculas e minúsculas.Dica
Só é possível passar um conjunto de dados de entrada como parâmetro, e você pode retornar apenas um conjunto de dados. No entanto, você pode chamar outros conjuntos de dados em seu código R e pode retornar saídas de outros tipos, além do conjunto de dados. Você também pode adicionar a palavra-chave OUTPUT a qualquer parâmetro para que ele retorne com os resultados.
Você também pode gerar valores usando apenas o script R sem dados de entrada (
@input_data_1
está definido como em branco).O script a seguir gera o texto "Olá" e "mundo".
EXECUTE sp_execute_external_script @language = N'R' , @script = N' mytextvariable <- c("hello", " ", "world"); OutputDataSet <- as.data.frame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
Resultados
@script como entrada" />
Verificar a versão do R
Se você quiser ver qual versão de R está instalada, execute o script a seguir.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'print(version)';
GO
A função print
do R retorna a versão para a janela Mensagens. Na saída de exemplo abaixo, você pode ver que, nesse caso, a versão 3.4.4 do R está instalada.
Resultados
STDOUT message(s) from external script:
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.4
year 2018
month 03
day 15
svn rev 74408
language R
version.string R version 3.4.4 (2018-03-15)
nickname Someone to Lean On
Listar pacotes do R
A Microsoft fornece vários pacotes do R pré-instalados com os Serviços de Machine Learning.
A Microsoft fornece vários pacotes do R pré-instalados com o R Services.
Para ver uma lista de quais pacotes do R estão instalados, incluindo informações de versão, dependências, licença e caminho de biblioteca, execute o script a seguir.
EXEC sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
Package NVARCHAR(255)
, Version NVARCHAR(100)
, Depends NVARCHAR(4000)
, License NVARCHAR(1000)
, LibPath NVARCHAR(2000)
));
A saída é de installed.packages()
em R e é retornada como um conjunto de resultados.
Resultados
Próximas etapas
Para saber como usar estruturas de dados ao usar o R com o aprendizado de máquina do SQL, siga este início rápido: