Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2017 (14.x) e versões
posteriores Instância Gerenciada SQL do Azure
Neste início rápido, você aprenderá a usar funções matemáticas e utilitárias do Python com os Serviços de Aprendizado de Máquina do SQL Server, os Serviços de Aprendizado de Máquina de Instância Gerenciada do SQL do Azure ou os Clusters de Big Data do SQL Server. As funções estatísticas são muitas vezes complicadas de implementar em T-SQL, mas podem ser feitas em Python com apenas algumas linhas de código.
Pré-requisitos
Você precisa dos seguintes pré-requisitos para executar este início rápido.
Um banco de dados SQL em uma destas plataformas:
- Serviços de Aprendizado de Máquina do SQL Server. Para instalar, consulte o guia de instalação do Windows ou o guia de instalação do Linux.
- Clusters de Big Data do SQL Server. Veja como habilitar os Serviços de Aprendizado de Máquina em Clusters de Big Data do SQL Server.
- Serviços de Aprendizado de Máquina de Instância Gerenciada SQL do Azure. Para obter informações, consulte a visão geral dos Serviços de Aprendizado de Máquina da Instância Gerenciada SQL do Azure.
Uma ferramenta para executar consultas SQL que contêm scripts Python. 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 Python numpy , que é instalado e carregado por padrão. O pacote contém centenas de funções para tarefas estatísticas comuns, entre elas a random.normal 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 Python a seguir retorna 100 números em uma média de 50, dado um desvio padrão de 3.
numpy.random.normal(size=100, loc=50, scale=3)
Para chamar esta linha de Python a partir de T-SQL, adicione a função Python no parâmetro de script Python em sp_execute_external_script. A saída espera um quadro de dados, então use pandas para convertê-lo.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=100, loc=50, scale=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? Você define um procedimento armazenado que obtém os argumentos do usuário e, em seguida, passa esses argumentos para o script Python como variáveis.
CREATE PROCEDURE MyPyNorm (
@param1 INT
, @param2 INT
, @param3 INT
)
AS
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import numpy
import pandas
OutputDataSet = pandas.DataFrame(numpy.random.normal(size=mynumbers, loc=mymean, scale=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
@paramsdefine todas as variáveis usadas pelo código Python e os tipos de dados SQL correspondentes.As linhas que se seguem imediatamente mapeiam os nomes dos parâmetros SQL para os nomes de variáveis Python correspondentes.
Agora que você envolveu a função Python em um procedimento armazenado, você pode facilmente chamar a função e passar valores diferentes, como este:
EXECUTE MyPyNorm @param1 = 100,@param2 = 50, @param3 = 3
Use funções do utilitário Python para solução de problemas
Os pacotes Python fornecem uma variedade de funções utilitárias para investigar o ambiente Python atual. Essas funções podem ser úteis se você estiver encontrando discrepâncias na maneira como seu código Python é executado no SQL Server e em ambientes externos.
Por exemplo, você pode usar funções de temporização do time sistema no pacote para medir a quantidade de tempo usada pelos processos Python e analisar problemas de desempenho.
EXECUTE sp_execute_external_script
@language = N'Python'
, @script = N'
import time
start_time = time.time()
# Run Python processes
elapsed_time = time.time() - start_time
'
, @input_data_1 = N' ;';
Próximos passos
Para criar um modelo de aprendizado de máquina usando Python com aprendizado de máquina SQL, siga este início rápido: