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 guia de início rápido, você aprenderá a usar estruturas de dados e tipos de dados ao usar Python nos Serviços de Aprendizado de Máquina do SQL Server, nos Serviços de Aprendizado de Máquina de Instância Gerenciada do SQL do Azure ou em Clusters de Big Data do SQL Server. Você aprenderá sobre como mover dados entre Python e SQL Server e os problemas comuns que podem ocorrer.
O aprendizado de máquina SQL depende do pacote Python pandas , que é ótimo para trabalhar com dados tabulares. No entanto, você não pode passar um escalar do Python para o seu banco de dados e esperar que ele simplesmente funcione. Neste guia de início rápido, você revisará algumas definições básicas de estrutura de dados, para prepará-lo para problemas adicionais que podem ser encontrados ao passar dados tabulares entre o Python e o banco de dados.
Os conceitos a conhecer antecipadamente incluem:
- Um quadro de dados é uma tabela com várias colunas.
- Uma única coluna de um quadro de dados é um objeto semelhante a uma lista chamado série.
- Um único valor de um quadro de dados é chamado de célula e é acessado por índice.
Como você exporia o resultado único de um cálculo como um quadro de dados, se um data.frame requer uma estrutura tabular? Uma resposta é representar o valor escalar único como uma série, que é facilmente convertida em um quadro de dados.
Observação
Ao retornar datas, Python em SQL usa DATETIME, que tem um intervalo de datas restrito de 1753-01-01(-53690) até 9999-12-31(2958463).
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.
Valor escalar representado como série
Este exemplo faz algumas contas simples e converte um escalar em uma série.
Uma série requer um índice, que você pode atribuir manualmente, como mostrado aqui, ou programaticamente.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b print(c) s = pandas.Series(c, index =["simple math example 1"]) print(s) 'Como a série não foi convertida em data.frame, os valores são retornados na janela Mensagens, mas você pode ver que os resultados estão em um formato mais tabular.
Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 dtype: float64Para aumentar o comprimento da série, você pode adicionar novos valores, usando uma matriz.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) 'Se você não especificar um índice, será gerado um índice com valores que começam com 0 e terminam com o comprimento da matriz.
Results
STDOUT message(s) from external script: 0 0.5 1 2.0 dtype: float64Se você aumentar o número de valores de índice , mas não adicionar novos valores de dados , os valores de dados serão repetidos para preencher a série.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b s = pandas.Series(c, index =["simple math example 1", "simple math example 2"]) print(s) 'Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 simple math example 2 0.5 dtype: float64
Converter séries em quadros de dados
Depois de converter os resultados de matemática escalar em uma estrutura tabular, você ainda precisa convertê-los em um formato que o aprendizado de máquina SQL possa manipular.
Para converter uma série em um data.frame, chame o método pandas DataFrame .
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) df = pd.DataFrame(s) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))O resultado é mostrado abaixo. Mesmo se você usar o índice para obter valores específicos do data.frame, os valores de índice não farão parte da saída.
Results
ResultadoValor 0,5 2
Produzir valores num data.frame
Agora você produzirá valores específicos de duas séries de resultados matemáticos em um data.frame. O primeiro tem um índice de valores sequenciais gerados pelo Python. O segundo usa um índice arbitrário de valores de cadeia de caracteres.
O exemplo a seguir obtém um valor da série usando um índice inteiro.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) df = pd.DataFrame(s, index=[1]) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))Results
ResultadoValor 2.0 Lembre-se de que o índice gerado automaticamente começa em 0. Tente usar um valor de índice fora do intervalo e veja o que acontece.
Agora obtenha um único valor do outro quadro de dados usando um índice de cadeia de caracteres.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b s = pandas.Series(c, index =["simple math example 1", "simple math example 2"]) print(s) df = pd.DataFrame(s, index=["simple math example 1"]) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))Results
ResultadoValor 0,5 Se você tentar usar um índice numérico para obter um valor desta série, você receberá um erro.
Próximos passos
Para aprender a escrever funções avançadas do Python com o aprendizado de máquina SQL, siga este guia de início rápido: