Avvio rapido: Funzioni R con apprendimento automatico in SQL

Si applica a: SQL Server 2016 (13.x) e versioni successive Istanza gestita di SQL di Azure

Questo argomento di avvio rapido descrive come usare funzioni matematiche e di utilità R con Machine Learning Services per SQL Server o in cluster Big Data. Le funzioni statistiche sono spesso complesse da implementare in T-SQL, ma possono essere eseguite in R con poche righe di codice.

Questo argomento di avvio rapido descrive come usare funzioni matematiche e di utilità R con Machine Learning Services per SQL Server. Le funzioni statistiche sono spesso complesse da implementare in T-SQL, ma possono essere eseguite in R con poche righe di codice.

Questo argomento di avvio rapido descrive come usare funzioni matematiche e di utilità R con R Services per SQL Server. Le funzioni statistiche sono spesso complesse da implementare in T-SQL, ma possono essere eseguite in R con poche righe di codice.

In questo argomento di avvio rapido viene descritto come usare le strutture dei dati e i tipi di dati con R in Machine Learning Services per Istanza gestita di SQL di Azure. Si apprenderà come spostare i dati tra R e Istanza gestita di SQL e verranno illustrati i problemi comuni che possono verificarsi.

Prerequisiti

Per completare questo argomento di avvio rapido è necessario soddisfare i prerequisiti seguenti.

  • Uno strumento per l'esecuzione di query SQL che contengono script R. In questo argomento di avvio rapido viene usato Azure Data Studio.

Creare una stored procedure per generare numeri casuali

Per semplicità, si userà il pacchetto stats di R, che viene installato e caricato per impostazione predefinita. Il pacchetto contiene centinaia di funzioni per le attività statistiche comuni, tra cui la funzione rnorm, che genera una quantità specificata di numeri casuali usando la distribuzione normale, in base a una deviazione e a una media standard.

Ad esempio, il codice R seguente restituisce 100 numeri, in una media di 50, in base alla deviazione standard 3.

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

Per chiamare questa riga di codice R da T-SQL, aggiungere la funzione R nel parametro di script R di sp_execute_external_script, come illustrato di seguito:

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));

Si vuole semplificare la generazione di un set diverso di numeri casuali?

Questa operazione è semplice se eseguita in combinazione con T-SQL. Si definisce una stored procedure che ottiene gli argomenti dall'utente e quindi si passano tali argomenti nello script R come variabili.

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));
  • La prima riga definisce ognuno dei parametri di input SQL necessari quando viene eseguita la stored procedure.

  • La riga che inizia con @params definisce tutte le variabili usate dal codice R e i tipi di dati SQL corrispondenti.

  • Le righe immediatamente successive eseguono il mapping dei nomi dei parametri SQL ai nomi delle variabili R corrispondenti.

Dopo aver eseguito il wrapping della funzione R in una stored procedure, è possibile chiamare facilmente la funzione e passare valori diversi, in questo modo:

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

Usare funzioni di utilità R per la risoluzione dei problemi

Il pacchetto utils, installato per impostazione predefinita, offre un'ampia gamma di funzioni di utilità per analizzare l'ambiente R corrente. Queste funzioni possono essere utili se si riscontrano discrepanze nell'esecuzione del codice R in SQL Server e in ambienti esterni.

È ad esempio possibile usare le funzioni relative al tempo di sistema in R, come system.time e proc.time, per acquisire il tempo usato dai processi R e analizzare i problemi di prestazioni. Per un esempio, vedere l'esercitazione Creare caratteristiche dei dati in cui le funzioni di calcolo del tempo R sono incorporate nella soluzione.

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;'

Per altre funzioni utili, vedere Migliorare le prestazioni tramite le funzioni di profilatura di R.

Passaggi successivi

Per creare un modello di Machine Learning usando R con Machine Learning in SQL, seguire questo argomento di avvio rapido: