Curso

Introdução
Você sabia que dá para escrever código em R e Python dentro das suas instruções T-SQL? Os Machine Learning Services do SQL Server eliminam a necessidade de mover dados. Em vez de transferir grandes volumes de dados sensíveis pela rede ou perder precisão com arquivos CSV de amostra, você pode executar seu código R/Python dentro do próprio banco de dados. Faça a implantação dos seus scripts R/Python com procedimentos armazenados do SQL e torne-os acessíveis nos seus processos de ETL ou para qualquer aplicação. Treine e armazene modelos de machine learning no banco, levando inteligência para onde os seus dados vivem.
Você pode instalar e rodar os pacotes open source mais recentes de R/Python para criar aplicações de Deep Learning e IA com grandes volumes de dados no SQL Server. Há também algoritmos de ponta e de alto desempenho nas APIs RevoScaleR e RevoScalePy da Microsoft. Usá-los junto com as inovações mais recentes do mundo open source permite levar uma combinação imbatível de variedade, performance e escala para suas aplicações.

Se você está animado para testar o SQL Server Machine Learning Services, confira o tutorial prático abaixo. Caso ainda não tenha os Machine Learning Services instalados no SQL Server, primeiro siga o tutorial de primeiros passos publicado aqui: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
Tutorial passo a passo
O que você vai aprender
Este tutorial cobre o básico de como executar R e Python em instruções T-SQL. Ao concluir, você saberá:
- Como incorporar scripts em R e Python em instruções T-SQL.
- Como usar parâmetros básicos para definir dados de entrada e saída nos scripts R/Python.
- Quais tipos de dados são usados para passar informações entre processos SQL e Python/R.
Pré-requisitos de configuração
Se você não tem os Machine Learning Services instalados no SQL Server, leia primeiro este tutorial de início rápido ou assista aos vídeos para configurar: https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
Vídeo de apoio
Se você prefere aprender por vídeo, este tutorial também está no YouTube: @https://aka.ms/ExecuteMLServices 
Noções básicas
Abra o SQL Server Management Studio e conecte-se ao seu servidor. Crie uma nova consulta e cole este exemplo básico: (Embora os exemplos usem Python, você pode fazer tudo em R também)
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
Sp_execute_external_script é um procedimento armazenado de sistema especial que habilita a execução de R e Python no SQL Server. O parâmetro language permite escolher entre Python e R. O parâmetro script é onde você cola o código em R ou Python. Se você não viu o número 7 como saída, volte e revise as etapas de configuração deste artigo.
Introdução a parâmetros
Depois do exemplo básico, vamos acrescentar mais elementos:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';
Os Machine Learning Services oferecem uma comunicação mais natural entre SQL e R/Python com um parâmetro de entrada que aceita qualquer consulta SQL. O nome desse parâmetro de entrada é input_data_1.
No código em Python, você vê variáveis padrão definidas para passar dados entre Python e SQL. Os nomes padrão são OutputDataSet e InputDataSet. Você pode alterá-los, como neste exemplo:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo',
@output_data_1_name =N'MyOutput';
Ao executar esses exemplos, você deve ter notado que o resultado retorna com (No column name)? Você pode especificar nomes para as colunas retornadas adicionando a cláusula WITH RESULT SETS ao final da instrução, informando uma lista separada por vírgulas com as colunas e seus tipos de dados.
EXEC sp_execute_external_script @language =N'Python',
@script=N'
MyOutput = MyInput;
',
@input_data_1_name = N'MyInput',
@input_data_1 =N'SELECT 1 AS foo,2 AS bar',
@output_data_1_name =N'MyOutput'
WITH RESULT SETS ((MyColName int, MyColName2 int));
Tipos de dados de entrada/saída
Agora, vamos falar um pouco mais sobre os tipos de dados usados entre SQL e Python. Sua instrução SQL SELECT passa um "DataFrame" para o Python usando o pacote Pandas do Python. A saída do Python de volta para o SQL também precisa estar em um objeto DataFrame do Pandas. Se você precisar converter valores escalares em um DataFrame, veja este exemplo:
EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
c = 1/2
d = 1*2
s = pd.Series([c,d])
df = pd.DataFrame(s)
OutputDataSet = df
'
As variáveis c e d são valores escalares; você pode adicioná-los a uma Series do Pandas e depois convertê-los em um DataFrame. Este exemplo é um pouco mais elaborado; consulte a documentação do pacote pandas para mais detalhes e exemplos:
EXEC sp_execute_external_script @language =N'Python',
@script=N'
import pandas as pd
s = {"col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(s)
OutputDataSet = df
'
Pronto! Você já sabe o básico de como executar R e Python em T-SQL. É bem simples chamar EXEC sp_execute_external_script, copiar/colar seu código em R ou Python e copiar/colar seu SELECT de entrada em SQL. Talvez você precise fazer uma transformação ou extração de dados que é simples em R/Python, mas complexa demais para escrever em SQL. Talvez você esteja treinando uma rede neural profunda com um volume enorme de dados, grande demais para enviar pela rede. Ou talvez você queira pontuar/prever automaticamente um resultado com novos dados entrando no seu sistema OLTP. As possibilidades são muitas — e agora você está pronto para aumentar segurança, performance e escala com os Machine Learning Services no SQL Server.
Leituras recomendadas
Sabia que você também pode escrever seu código em R e Python no seu IDE favorito, como RStudio e Jupyter Notebooks, e enviar a execução remotamente para o SQL Server? Confira estes links de documentação para saber mais: Documentação: https://aka.ms/R-RemoteSQLExecution Documentação: https://aka.ms/R-RemoteSQLExecution Exemplo no Github (Jupyter Notebook): https://aka.ms/RemoteExecJupyter
Se você quer aprender mais sobre SQL, confira nosso curso Intro to SQL for Data Science e o hub de como aprender SQL.
