Partilhar via


Guia de início rápido: funções R 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 guia de início rápido, você aprenderá a usar funções matemáticas e utilitárias do R com os Serviços de Aprendizado de Máquina do SQL Server ou em Clusters de Big Data. As funções estatísticas são muitas vezes complicadas de implementar em T-SQL, mas podem ser feitas em R com apenas algumas linhas de código.

Neste início rápido, você aprenderá a usar funções matemáticas e utilitárias do R com os Serviços de Aprendizado de Máquina do SQL Server. As funções estatísticas são muitas vezes complicadas de implementar em T-SQL, mas podem ser feitas em R com apenas algumas linhas de código.

Neste início rápido, você aprenderá a usar funções matemáticas e utilitárias do R com o SQL Server R Services. As funções estatísticas são muitas vezes complicadas de implementar em T-SQL, mas podem ser feitas em R com apenas algumas linhas de código.

Neste início rápido, você aprenderá a usar estruturas de dados e tipos de dados ao usar R nos Serviços de Aprendizado de Máquina de Instância Gerenciada SQL do Azure. Você aprenderá sobre como mover dados entre a Instância Gerenciada R e SQL e os problemas comuns que podem ocorrer.

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.

Criar um procedimento armazenado para gerar números aleatórios

Para simplificar, vamos usar o pacote R stats , que é instalado e carregado por padrão. O pacote contém centenas de funções para tarefas estatísticas comuns, entre elas a rnorm função, que gera um número especificado de números aleatórios usando a distribuição normal, dado um desvio padrão e média.

Por exemplo, o código R a seguir retorna 100 números em uma média de 50, dado um desvio padrão de 3.

as.data.frame(rnorm(100, mean = 50, sd = 3));

Para chamar essa linha de R do T-SQL, adicione a função R no parâmetro de script R de sp_execute_external_script, desta forma:

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
         OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
    , @input_data_1 = N'   ;'
      WITH RESULT SETS (([Density] float NOT NULL));

E se você quiser facilitar a geração de um conjunto diferente de números aleatórios?

Isso é fácil quando combinado com T-SQL. Você define um procedimento armazenado que obtém os argumentos do usuário e, em seguida, passa esses argumentos para o script R como variáveis.

CREATE PROCEDURE MyRNorm (
    @param1 INT
    , @param2 INT
    , @param3 INT
    )
AS
EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'
	     OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
    , @input_data_1 = N'   ;'
    , @params = N' @mynumbers int, @mymean int, @mysd int'
    , @mynumbers = @param1
    , @mymean = @param2
    , @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
  • A primeira linha define cada um dos parâmetros de entrada SQL que são necessários quando o procedimento armazenado é executado.

  • A linha que começa com @params define todas as variáveis usadas pelo código R e os tipos de dados SQL correspondentes.

  • As linhas que se seguem imediatamente mapeiam os nomes dos parâmetros SQL para os nomes das variáveis R correspondentes.

Agora que você envolveu a função R em um procedimento armazenado, você pode facilmente chamar a função e passar valores diferentes, como este:

EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3

Use as funções do utilitário R para solucionar problemas

O pacote utils , instalado por padrão, fornece uma variedade de funções utilitárias para investigar o ambiente R atual. Essas funções podem ser úteis se você estiver encontrando discrepâncias na maneira como seu código R é executado no SQL Server e em ambientes externos.

Por exemplo, você pode usar as funções de temporização do sistema em R, como system.time e proc.time, para capturar o tempo usado pelos processos R e analisar problemas de desempenho. Para obter um exemplo, consulte o tutorial Criar recursos de dados onde as funções de temporização R são incorporadas na solução.

EXECUTE sp_execute_external_script
      @language = N'R'
    , @script = N'
        library(utils);
        start.time <- proc.time();
        
        # Run R processes
        
        elapsed_time <- proc.time() - start.time;'

Para outras funções úteis, consulte Usar funções de criação de perfil de código R para melhorar o desempenho.

Próximos passos

Para criar um modelo de aprendizado de máquina usando R com aprendizado de máquina SQL, siga este guia de início rápido: