Delen via


Quickstart: Eenvoudige R-scripts uitvoeren met SQL Machine Learning

Van toepassing op: SQL Server 2016 (13.x) en latere versies van Azure SQL Managed Instance

In deze quickstart voert u een set eenvoudige R-scripts uit met behulp van SQL Server Machine Learning Services of op Big Data-clusters. U leert hoe u de opgeslagen procedure sp_execute_external_script gebruikt om het script uit te voeren in een SQL Server-exemplaar.

In deze quickstart voert u een set eenvoudige R-scripts uit met behulp van SQL Server Machine Learning Services. U leert hoe u de opgeslagen procedure sp_execute_external_script gebruikt om het script uit te voeren in een SQL Server-exemplaar.

In deze quickstart voert u een set eenvoudige R-scripts uit met behulp van SQL Server R Services. U leert hoe u de opgeslagen procedure sp_execute_external_script gebruikt om het script uit te voeren in een SQL Server-exemplaar.

In deze quickstart voert u een set eenvoudige R-scripts uit met behulp van Azure SQL Managed Instance Machine Learning Services. U leert hoe u de opgeslagen procedure sp_execute_external_script gebruikt om het script in uw database uit te voeren.

Vereiste voorwaarden

U hebt de volgende vereisten nodig om deze quickstart uit te voeren.

Een eenvoudig script uitvoeren

Als u een R-script wilt uitvoeren, geeft u het als argument door aan de door het systeem opgeslagen procedure , sp_execute_external_script. Deze door het systeem opgeslagen procedure start de R-runtime, geeft gegevens door aan R, beheert R-gebruikerssessies veilig en retourneert eventuele resultaten aan de client.

In de volgende stappen voert u dit R-voorbeeldscript uit:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Open Azure Data Studio en maak verbinding met uw server.

  2. Geef het volledige R-script door aan de sp_execute_external_script opgeslagen procedure.

    Het script wordt doorgegeven via het @script argument. Alles binnen het @script argument moet geldige R-code zijn.

    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. Het juiste resultaat wordt berekend en de functie R print retourneert het resultaat in het venster Berichten .

    Het ziet er ongeveer als volgt uit.

    resultaten

    STDOUT message(s) from external script:
    0.5 2
    

Een Hallo wereld-script uitvoeren

Een typisch voorbeeldscript is een script dat alleen de string 'Hello World' uitvoert. Voer de volgende opdracht uit.

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

Invoer voor de sp_execute_external_script opgeslagen procedure is onder andere:

Invoer Description
@language definieert de taalextensie die moet worden aangeroepen, in dit geval R
@script definieert de opdrachten die worden doorgegeven aan de R-runtime. Uw hele R-script moet in dit argument zijn opgenomen als Unicode-tekst. U kunt de tekst ook toevoegen aan een variabele van het type nvarchar en vervolgens de variabele aanroepen
@input_data_1 gegevens die worden geretourneerd door de query, doorgegeven aan de R-runtime, die de gegevens als een gegevensframe retourneert
MET RESULTAATSETS clausule definieert het schema van de geretourneerde gegevenstabel door 'Hallo wereld' toe te voegen als de kolomnaam, int voor het gegevenstype

De opdracht voert de volgende tekst uit:

Hello World
1

Invoer en uitvoer gebruiken

Accepteert standaard sp_execute_external_script één gegevensset als invoer, die doorgaans wordt opgegeven in de vorm van een geldige SQL-query. Vervolgens wordt één R-gegevensframe als uitvoer geretourneerd.

Voorlopig gebruiken we de standaardinvoer- en uitvoervariabelen van sp_execute_external_script: InputDataSet en OutputDataSet.

  1. Maak een kleine tabel met testgegevens.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Gebruik de SELECT instructie om een query uit te voeren op de tabel.

    SELECT *
    FROM RTestData
    

    resultaten

    Inhoud van de RTestData-tabel

  3. Voer het volgende R-script uit. Hiermee worden de gegevens opgehaald uit de tabel met behulp van de SELECT instructie, doorgegeven aan de R-runtime en worden de gegevens geretourneerd als een gegevensframe. De WITH RESULT SETS component definieert het schema van de geretourneerde gegevenstabel voor SQL, waarbij de kolomnaam NewColName wordt toegevoegd.

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

    resultaten

    Uitvoer van R-script dat gegevens uit een tabel retourneert

  4. Nu gaan we de namen van de invoer- en uitvoervariabelen wijzigen. De standaardnamen voor invoer- en uitvoervariabelen zijn InputDataSet en OutputDataSet. Met dit script worden de namen gewijzigd in SQL_in en 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));
    

    Houd er rekening mee dat R hoofdlettergevoelig is. De invoer- en uitvoervariabelen die worden gebruikt in het R-script (SQL_out, SQL_in) moeten overeenkomen met de namen die zijn gedefinieerd met @input_data_1_name en @output_data_1_name, inclusief hoofdletters.

    Aanbeveling

    Er kan slechts één invoergegevensset worden doorgegeven als parameter en u kunt slechts één gegevensset retourneren. U kunt echter andere gegevenssets aanroepen vanuit uw R-code en u kunt naast de gegevensset ook uitvoer van andere typen retourneren. U kunt ook het trefwoord OUTPUT toevoegen aan elke parameter om deze met de resultaten te laten retourneren.

  5. U kunt ook waarden genereren met behulp van het R-script zonder invoergegevens (@input_data_1 is ingesteld op leeg).

    Met het volgende script wordt de tekst 'hello' en 'world' uitgevoerd.

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

    resultaten

    Queryresultaten met behulp van <span class= @script als invoer" />

R-versie controleren

Als u wilt zien welke versie van R is geïnstalleerd, voert u het volgende script uit.

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

De R-functie print retourneert de versie naar het venster Berichten . In de onderstaande voorbeelduitvoer ziet u dat in dit geval R versie 3.4.4 is geïnstalleerd.

resultaten

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

R-pakketten vermelden

Microsoft biedt een aantal R-pakketten die vooraf zijn geïnstalleerd met Machine Learning Services.

Microsoft biedt een aantal R-pakketten die vooraf zijn geïnstalleerd met R Services.

Voer het volgende script uit om een lijst weer te geven van welke R-pakketten zijn geïnstalleerd, inclusief versie, afhankelijkheden, licentie en bibliotheekpadinformatie.

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

De uitvoer is afkomstig uit installed.packages() R en wordt geretourneerd als een resultatenset.

resultaten

Geïnstalleerde pakketten in R

Volgende stappen

Volg deze quickstart voor meer informatie over het gebruik van gegevensstructuren bij het gebruik van R met SQL Machine Learning: