Corso

Introduzione
Sapevi che puoi scrivere codice R e Python all'interno delle istruzioni T-SQL? I Machine Learning Services in SQL Server eliminano la necessità di spostare i dati. Invece di trasferire grandi quantità di dati sensibili sulla rete o perdere accuratezza con file CSV di esempio, puoi eseguire il tuo codice R/Python direttamente nel database. Distribuisci facilmente il tuo codice R/Python con stored procedure SQL, rendendolo accessibile nei tuoi processi ETL o a qualsiasi applicazione. Allena e archivia modelli di machine learning nel database, portando l'intelligenza dove vivono i tuoi dati.
Puoi installare ed eseguire gli ultimi pacchetti open source R/Python per creare applicazioni di Deep Learning e AI su grandi moli di dati in SQL Server. Ci sono anche algoritmi all'avanguardia e ad alte prestazioni nelle API RevoScaleR e RevoScalePy di Microsoft. Usandoli insieme alle ultime innovazioni del mondo open source, puoi offrire una selezione, prestazioni e scalabilità senza precedenti alle tue applicazioni.

Se non vedi l'ora di provare i Machine Learning Services di SQL Server, dai un'occhiata al tutorial pratico qui sotto. Se non hai installato i Machine Learning Services in SQL Server, per prima cosa segui il tutorial introduttivo pubblicato qui: https://blogs.msdn.microsoft.com/mlserver/2018/05/18/getting-started-with-machine-learning-services-in-sql-server/
Tutorial pratico
Cosa imparerai
Questo tutorial coprirà le basi di come eseguire R e Python nelle istruzioni T-SQL. Al termine, saprai:
- Come incorporare script R e Python nelle istruzioni T-SQL.
- Come usare parametri di base per specificare dati di input e output per gli script R/Python.
- Quali tipi di dati vengono usati per passare i dati tra i processi SQL e Python/R.
Prerequisiti di configurazione
Se non hai installato i Machine Learning Services su SQL Server, leggi prima questo tutorial introduttivo o guarda questi video per configurare l'ambiente: https://aka.ms/InstallMLServices https://aka.ms/EnableMLServices
Video di accompagnamento
Se preferisci imparare con i video, questo tutorial è disponibile anche su YouTube: @https://aka.ms/ExecuteMLServices 
Basi
Apri SQL Server Management Studio e connettiti al tuo server. Apri una nuova query e incolla questo esempio di base: (Anche se in questi esempi si usa Python, puoi fare tutto anche con R)
EXEC sp_execute_external_script @language = N'Python',
@script = N'print(3+4)'
Sp_execute_external_script è una stored procedure di sistema speciale che abilita l'esecuzione di R e Python in SQL Server. C'è un parametro language che ti permette di scegliere tra Python e R. C'è un parametro script dove puoi incollare codice R o Python. Se non vedi come output la stampa di 7, torna a rivedere i passaggi di configurazione in questo articolo.
Introduzione ai parametri
Dopo aver visto un esempio di base, iniziamo ad aggiungere altri elementi:
EXEC sp_execute_external_script @language =N'Python',
@script = N'
OutputDataSet = InputDataSet;
',
@input_data_1 =N'SELECT 1 AS Col1';
I Machine Learning Services offrono comunicazioni più naturali tra SQL e R/Python con un parametro per i dati di input che accetta qualsiasi query SQL. Il nome del parametro di input è input_data_1.
Nel codice Python puoi vedere che sono definite variabili predefinite per passare i dati tra Python e SQL. I nomi predefiniti sono OutputDataSet e InputDataSet. Puoi cambiare questi nomi predefiniti come in questo esempio:
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';
Eseguendo questi esempi, potresti aver notato che ognuno restituisce un risultato con (No column name)? Puoi specificare un nome per le colonne restituite aggiungendo la clausola WITH RESULT SETS alla fine dell'istruzione, che è un elenco separato da virgole di colonne e relativi tipi di dati.
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));
Tipi di dati di input/output
Bene, parliamo un po' di più dei tipi di dati di input/output usati tra SQL e Python. La tua istruzione di input SQL SELECT passa un "DataFrame" a Python facendo affidamento sul pacchetto Python Pandas. Anche l'output da Python verso SQL deve essere un oggetto DataFrame di Pandas. Se devi convertire valori scalari in un DataFrame, ecco un esempio:
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
'
Le variabili c e d sono entrambe valori scalari, che puoi aggiungere a una Series di pandas, se vuoi, e poi convertirle in un DataFrame di pandas. Questo è un esempio un po' più articolato; leggi la documentazione del pacchetto pandas in Python per maggiori dettagli ed esempi:
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
'
Ora conosci le basi di come eseguire R e Python in T-SQL! È molto semplice chiamare EXEC sp_execute_external_script, copiare/incollare il tuo codice R o Python e copiare/incollare la tua SELECT SQL di input. Magari ti serve effettuare una trasformazione o un'estrazione dati semplice in R/Python ma troppo complessa da scrivere in SQL. Forse stai addestrando una rete neurale profonda su enormi quantità di dati, troppo grandi per essere inviati su una rete. O magari vuoi calcolare automaticamente uno score/predire un risultato su nuovi dati che entrano nel tuo sistema OLTP. I casi d'uso sono ampi e ora sei pronto a migliorare sicurezza, prestazioni e scalabilità con i Machine Learning Services in SQL Server.
Per approfondire
Sapevi che puoi anche scrivere il tuo codice R e Python nel tuo IDE preferito, come RStudio e Jupyter Notebooks, e poi inviarne l'esecuzione in remoto a SQL Server? Consulta questi link alla documentazione per saperne di più: Documentazione: https://aka.ms/R-RemoteSQLExecution Documentazione: https://aka.ms/R-RemoteSQLExecution Esempio di Jupyter Notebook su Github: https://aka.ms/RemoteExecJupyter
Se vuoi imparare di più su SQL, dai un'occhiata al nostro corso Introduzione a SQL per la Data Science e al nostro hub su come imparare SQL.

