Condividi tramite


Avvio rapido: Eseguire script R semplici con Machine Learning in SQL

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

In questa guida di avvio rapido, eseguirai un set di script R semplici con SQL Server Machine Learning Services oppure su Big Data Clusters. Si apprenderà come usare la stored procedure sp_execute_external_script per eseguire lo script in un'istanza di SQL Server.

Nella presente guida rapida, eseguirai un set di semplici script R utilizzando SQL Server Machine Learning Services. Si apprenderà come usare la stored procedure sp_execute_external_script per eseguire lo script in un'istanza di SQL Server.

In questo avvio rapido, eseguirai un set di semplici script R utilizzando SQL Server R Services. Si apprenderà come usare la stored procedure sp_execute_external_script per eseguire lo script in un'istanza di SQL Server.

In questa introduzione rapida, verranno eseguiti un set di script R semplici usando i Servizi di Machine Learning su Istanza Gestita SQL di Azure. Imparerai come usare la stored procedure sp_execute_external_script per eseguire lo script nel tuo database.

Prerequisiti

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

Eseguire uno script semplice

Per eseguire uno script R, lo passerai come argomento alla stored procedure di sistema sp_execute_external_script. Questa stored procedure di sistema avvia il runtime R, passa i dati a R, gestisce in modo sicuro le sessioni utente di R e restituisce i risultati al cliente.

Nei passaggi seguenti si eseguirà questo script R di esempio:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Aprire Visual Studio Code e connettersi al server.

  2. Passa lo script R completo alla stored procedure sp_execute_external_script.

    Lo script viene passato tramite l'argomento @script. Tutti gli elementi all'interno dell'argomento @script devono essere costituiti da codice R valido.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    a <- 1
    b <- 2
    c <- a/b
    d <- a*b
    print(c(c, d))
    '
    
  3. Viene calcolato il risultato corretto e la funzione print di R restituisce il risultato nella finestra Messaggi.

    Dovrebbe apparire simile a questo.

    Risultati

    STDOUT message(s) from external script:
    0.5 2
    

Eseguire uno script Hello World

Uno script di esempio tipico è quello che restituisce come output la stringa "Hello World". Esegui il comando seguente:

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'OutputDataSet<-InputDataSet'
    , @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO

Gli input per la stored procedure sp_execute_external_script includono:

Input Descrizione
@language Definisce l'estensione del linguaggio da chiamare, in questo caso R
@script Definiscono i comandi passati al runtime R. L'intero script R deve essere incluso in questo argomento, come testo Unicode. È anche possibile aggiungere il testo a una variabile di tipo nvarchar e quindi chiamare la variabile
@input_data_1 Dati restituiti dalla query, passati al runtime R, che restituisce i dati come frame di dati
CON SET DI RISULTATI Clausola che definisce lo schema della tabella dati restituita, aggiungendo "Hello World" come nome di colonna e int per il tipo di dati

Il comando restituisce il testo seguente:

Hello World
1

Usare gli ingressi e le uscite

Per impostazione predefinita, sp_execute_external_script accetta un singolo set di dati come input, che in genere viene fornito sotto forma di query SQL valida. Restituisce quindi un singolo frame di dati R come output.

Per il momento, verranno usate le variabili di input e di output predefinite di sp_execute_external_script: InputDataSet e OutputDataSet.

  1. Creare una piccola tabella di dati di test.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Usare l'istruzione SELECT per eseguire una query sulla tabella.

    SELECT *
    FROM RTestData
    

    Risultati

    Contenuto della tabella RTestData

  3. Eseguire lo script R seguente. Questo script recupera i dati dalla tabella usando l'istruzione SELECT, li passa nel runtime R e restituisce i dati come frame di dati. La clausola WITH RESULT SETS definisce lo schema della tabella dati restituita per SQL, aggiungendo il nome di colonna NewColName.

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'OutputDataSet <- InputDataSet;'
        , @input_data_1 = N'SELECT * FROM RTestData;'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    Risultati

    Output dello script R che restituisce i dati di una tabella

  4. Modificare ora i nomi delle variabili di input e di output. I nomi delle variabili di input e di output predefiniti sono InputDataSet e OutputDataSet. Questo script cambia i nomi in SQL_in e SQL_out:

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N' SQL_out <- SQL_in;'
        , @input_data_1 = N' SELECT 12 as Col;'
        , @input_data_1_name = N'SQL_in'
        , @output_data_1_name = N'SQL_out'
    WITH RESULT SETS(([NewColName] INT NOT NULL));
    

    Si noti che R fa distinzione tra maiuscole e minuscole. Le variabili di input e di output usate nello script R (SQL_out, SQL_in) devono corrispondere ai nomi definiti con @input_data_1_name e @output_data_1_name, inclusa la distinzione tra maiuscole e minuscole.

    Suggerimento

    È possibile passare come parametro un solo set di dati di input e si può restituire un solo set di dati. Tuttavia, è possibile chiamare altri set di dati dall'interno del codice R e restituire output di altri tipi in aggiunta al set di dati. È anche possibile aggiungere la parola chiave OUTPUT a qualsiasi parametro per fare in modo che venga restituito con i risultati.

  5. È anche possibile generare i valori usando solo lo script R senza dati di input (@input_data_1 è impostato su un valore vuoto).

    Lo script seguente restituisce il testo "hello" e "world".

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    mytextvariable <- c("hello", " ", "world");
    OutputDataSet <- as.data.frame(mytextvariable);
    '
        , @input_data_1 = N''
    WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
    

    Risultati

    Risultati della query con <span class= @script come input" />

Controllare la versione di R

Per vedere la versione di R installata, eseguire lo script seguente.

EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(version)';
GO

La funzione R print restituisce la versione nella finestra Messaggi. Nell'output di esempio seguente si può notare che in questo caso è installata la versione di R 3.4.4.

Risultati

STDOUT message(s) from external script:
                   _
platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          3
minor          4.4
year           2018
month          03
day            15
svn rev        74408
language       R
version.string R version 3.4.4 (2018-03-15)
nickname       Someone to Lean On

Elencare i pacchetti R

Microsoft offre una serie di pacchetti R preinstallati con Machine Learning Services.

Microsoft offre una serie di pacchetti R preinstallati con R Services.

Per visualizzare un elenco dei pacchetti R installati, incluse le informazioni su versione, dipendenze, licenza e percorso della libreria, eseguire lo script seguente.

EXEC sp_execute_external_script @language = N'R'
    , @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((
            Package NVARCHAR(255)
            , Version NVARCHAR(100)
            , Depends NVARCHAR(4000)
            , License NVARCHAR(1000)
            , LibPath NVARCHAR(2000)
            ));

L'output proviene da installed.packages() in R e viene restituito come set di risultati.

Risultati

Pacchetti installati in R

Passaggi successivi

Per informazioni su come usare le strutture di dati quando si usa R con Machine Learning in SQL, seguire questo argomento di avvio rapido: