Partilhar via


Guia de início rápido: execute scripts R simples com aprendizado de máquina SQL

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada SQL do Azure

Neste início rápido, você executará um conjunto de scripts R simples usando os Serviços de Aprendizado de Máquina do SQL Server ou em Clusters de Big Data. Você aprenderá como usar o sp_execute_external_script de procedimento armazenado 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 Aprendizado de Máquina do SQL Server. Você aprenderá como usar o sp_execute_external_script de procedimento armazenado 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 o SQL Server R Services. Você aprenderá como usar o sp_execute_external_script de procedimento armazenado 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 Aprendizado de Máquina de Instância Gerenciada SQL do Azure. Você aprenderá como usar o sp_execute_external_script de procedimento armazenado para executar o script em seu banco de dados.

Pré-requisitos

Você precisa dos seguintes pré-requisitos para executar este início rápido.

  • Uma ferramenta para executar consultas SQL que contêm scripts R. Este guia de início rápido usa 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. Este procedimento armazenado do sistema inicia o tempo de execução do R, passa dados para R, gerencia sessões de usuário do R com segurança e retorna todos os resultados para o cliente.

Nas etapas a seguir, você executará este exemplo de script R:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Abra o Azure Data Studio e conecte-se ao seu servidor.

  2. Passe o script R completo para o sp_execute_external_script procedimento armazenado.

    O script é passado através do @script argumento. Tudo dentro do @script argumento deve ser um 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))
    '
    
  3. O resultado correto é calculado e a função R print retorna o resultado para a janela Mensagens .

    Deveria ser algo assim.

    Results

    STDOUT message(s) from external script:
    0.5 2
    

Executar um script Hello World

Um script de exemplo típico é aquele que apenas produz a string "Hello World". Execute o seguinte comando.

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 sp_execute_external_script procedimento armazenado incluem:

Entrada Description
@language Define a extensão de linguagem a ser chamada, neste caso, R
@script Define-se os comandos passados para o ambiente de execução R. Todo o script R deve ser contido neste argumento, como texto Unicode. Você também pode adicionar o texto a uma variável do tipo nvarchar e, em seguida, chamar a variável
@input_data_1 dados retornados pela consulta, passados para o ambiente de execução R, que retorna os dados em forma de um quadro de dados
COM CONJUNTOS DE RESULTADOS define o esquema da tabela de dados retornada, adicionando "Hello World" como o nome da coluna, int para o tipo de dados

O comando produz o seguinte texto:

Hello World
1

Usar 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 um único quadro de dados R como saída.

Por enquanto, vamos usar as variáveis de entrada e saída padrão de sp_execute_external_script: InputDataSet e OutputDataSet.

  1. 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
    
  2. Use a SELECT instrução para consultar a tabela.

    SELECT *
    FROM RTestData
    

    Results

    Conteúdo da tabela RTestData

  3. Execute o seguinte script R. Ele recupera os dados da tabela usando a SELECT instrução, passa-os pelo tempo de execução do R e retorna os dados como um quadro de dados. A WITH RESULT SETS cláusula define o esquema da tabela de dados retornada para SQL, adicionando o nome da 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));
    

    Results

    Saída do script R que retorna dados de uma tabela

  4. Agora vamos alterar os nomes das variáveis de entrada e saída. Os nomes das variáveis de entrada e saída padrão são InputDataSet e OutputDataSet, esse 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.

    Sugestão

    Apenas um conjunto de dados de entrada pode ser passado como um parâmetro e você pode retornar apenas um conjunto de dados. No entanto, você pode chamar outros conjuntos de dados de dentro do 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 ela seja retornada com os resultados.

  5. Você também pode gerar valores apenas usando o script R sem dados de entrada (@input_data_1 está definido como em branco).

    O script a seguir produz 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));
    

    Results

    Resultados da consulta usando <span class= @script como entrada" />

Verifique a versão R

Se você gostaria de ver qual versão do R está instalada, execute o seguinte script.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(version)';
GO

A função R print retorna a versão para a janela Mensagens . No exemplo de saída abaixo, você pode ver que, neste caso, R versão 3.4.4 está instalado.

Results

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 R

A Microsoft fornece vários pacotes R pré-instalados com os Serviços de Aprendizado de Máquina.

A Microsoft fornece vários pacotes R pré-instalados com o R Services.

Para ver uma lista de quais pacotes R estão instalados, incluindo informações sobre versão, dependências, licença e caminho da 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.

Results

Pacotes instalados em R

Próximos passos

Para saber como usar estruturas de dados ao usar R com aprendizado de máquina SQL, siga este guia de início rápido: