Condividi tramite


Avvio rapido: Funzioni R con apprendimento automatico in SQL

Si applica a: SQL Server 2016 (13.x) e versioni successive di 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 avvio rapido, imparerai come usare le strutture dati e i tipi di dati con R in Servizi di Machine Learning di Istanza Gestita di Azure SQL. Si apprenderà come spostare i dati tra R e Istanza gestita di SQL e verranno illustrati i problemi comuni che possono verificarsi.

Prerequisiti

Per eseguire questo avvio rapido, è necessario avere i prerequisiti seguenti.

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, con una media di 50, con una deviazione standard di 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. Definisci una stored procedure che ottiene gli argomenti dall'utente, successivamente inserisci tali argomenti nello script in 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 apprendimento automatico usando R con le funzionalità di apprendimento automatico in SQL, segui questa esercitazione rapida: