Megosztás a következőn keresztül:


Rövid útmutató: Egyszerű R-szkriptek futtatása AZ SQL Machine Learning használatával

A következőkre vonatkozik: Sql Server 2016 (13.x) és újabb verziók felügyelt Azure SQL-példány

Ebben a rövid útmutatóban egyszerű R-szkripteket fog futtatni az SQL Server Machine Learning Services vagy a Big Data-fürtök használatával. Megtudhatja, hogyan használhatja a tárolt eljárást sp_execute_external_script a szkript SQL Server-példányban való végrehajtásához.

Ebben a rövid útmutatóban egyszerű R-szkripteket fog futtatni az SQL Server Machine Learning Services használatával. Megtudhatja, hogyan használhatja a tárolt eljárást sp_execute_external_script a szkript SQL Server-példányban való végrehajtásához.

Ebben a rövid útmutatóban egyszerű R-szkripteket fog futtatni az SQL Server R Services használatával. Megtudhatja, hogyan használhatja a tárolt eljárást sp_execute_external_script a szkript SQL Server-példányban való végrehajtásához.

Ebben a rövid útmutatóban egyszerű R-szkripteket fog futtatni az Azure SQL Managed Instance Machine Learning Services használatával. Megtudhatja, hogyan használhatja a tárolt eljárást sp_execute_external_script a szkript végrehajtásához az adatbázisban.

Előfeltételek

A rövid útmutató futtatásához a következő előfeltételekre lesz szüksége.

  • R-szkripteket tartalmazó SQL-lekérdezések futtatására szolgáló eszköz. Ez a gyors kezdési útmutató az Azure Data Studio használatát követi.

Egyszerű szkript futtatása

R-szkript futtatásához argumentumként adja át a rendszer által tárolt eljárásnak, sp_execute_external_script. Ez a rendszer által tárolt eljárás elindítja az R-futtatókörnyezetet, adatokat továbbít az R-nek, biztonságosan kezeli az R felhasználói munkameneteket, és visszaadja az eredményeket az ügyfélnek.

A következő lépésekben ezt a példa R-szkriptet fogja futtatni:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Nyissa meg az Azure Data Studiót , és csatlakozzon a kiszolgálóhoz.

  2. Adja át a teljes R-szkriptet a sp_execute_external_script tárolt eljárásnak.

    A szkript át lesz adva az @script argumentumon. Az argumentumon @script belül mindennek érvényes R-kódnak kell lennie.

    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. A rendszer kiszámítja a helyes eredményt, és az R print függvény visszaadja az eredményt az Üzenetek ablaknak.

    Valahogy így kell kinéznie.

    Results

    STDOUT message(s) from external script:
    0.5 2
    

Hello World-szkript futtatása

Egy tipikus példaszkript az, amely csak a "Hello World" sztringet adja ki. Futtassa az alábbi parancsot.

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

A sp_execute_external_script tárolt eljárás bemenetei a következők:

Bemenet Description
@language meghatározza a meghívandó nyelvi bővítményt, ebben az esetben az R
@script Az R-futtatókörnyezetnek átadott parancsokat meghatározza. Ebben az argumentumban a teljes R-szkriptet Unicode-szövegként kell csatolni. A szöveget egy nvarchar típusú változóhoz is hozzáadhatja, majd meghívhatja a változót
@input_data_1 a lekérdezés által visszaadott, az R-futtatókörnyezetnek átadott adatok, amelyek adatkeretként adják vissza az adatokat
EREDMÉNYHALMAZOKKAL A záradék meghatározza a visszaadott adattábla sémáját, amelyhez "Hello World" hozzáadásra kerül mint oszlopnév, és int az adattípus.

A parancs a következő szöveget adja ki:

„Helló világ!” alkalmazás
1

Bemenetek és kimenetek használata

Alapértelmezés szerint sp_execute_external_script egyetlen adathalmazt fogad el bemenetként, amelyet általában érvényes SQL-lekérdezés formájában ad meg. Ezután egyetlen R-adatkeretet ad vissza kimenetként.

Egyelőre az sp_execute_external_script és az OutputDataSet alapértelmezett bemeneti és kimeneti változóit használjuk.

  1. Hozzon létre egy kis táblázatot a tesztadatokból.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. A SELECT utasítással kérdezheti le a táblát.

    SELECT *
    FROM RTestData
    

    Results

    Az RTestData tábla tartalma

  3. Futtassa a következő R-szkriptet. A SELECT utasítással lekéri az adatokat a táblából, átfuttatja az R környezeten, és adatkeret formájában adja vissza az adatokat. A WITH RESULT SETS záradék meghatározza az SQL visszaadott adattáblájának sémáját, és hozzáadja a NewColName oszlopnevet.

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

    Results

    Olyan R-szkript kimenete, amely adatokat ad vissza egy táblából

  4. Most változtassuk meg a bemeneti és kimeneti változók nevét. A bemeneti és kimeneti változók alapértelmezett neve az InputDataSet és az OutputDataSet, ez a szkript a neveket SQL_in és SQL_out értékre módosítja:

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

    Vegye figyelembe, hogy az R kis- és nagybetűérzékeny. Az R-szkriptben használt bemeneti és kimeneti változóknak (SQL_out, SQL_in) meg kell egyezniük azzal a névvel, amelyet a @input_data_1_name és @output_data_1_name karakterhelyőrzőkkel definiálnak, beleértve a betűméretet is.

    Jótanács

    Paraméterként csak egy bemeneti adatkészlet adható át, és csak egy adathalmazt adhat vissza. Az R-kódon belülről azonban meghívhat más adatkészleteket, és az adatkészleten kívül más típusú kimeneteket is visszaadhat. Az OUTPUT kulcsszót bármely paraméterhez hozzáadhatja, hogy az eredményekkel együtt visszaadja.

  5. Értékeket is létrehozhat csak az R-szkripttel bemeneti adatok nélkül (@input_data_1 üresre van állítva).

    A következő szkript a "hello" és a "world" szöveget adja ki.

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

    Results

    Eredmények lekérdezése <span class= @script bemenetként" />

R-verzió ellenőrzése

Ha látni szeretné, hogy az R melyik verziója van telepítve, futtassa a következő szkriptet.

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

Az R print függvény visszaadja a verziót az Üzenetek ablakba. Az alábbi példakimenetben láthatja, hogy ebben az esetben az R 3.4.4-es verziója van telepítve.

Results

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-csomagok listázása

A Microsoft számos, a Machine Learning Services szolgáltatással előre telepített R-csomagot biztosít.

A Microsoft számos előre telepített R-csomagot biztosít az R Services használatával.

A telepített R-csomagok listájának megtekintéséhez, beleértve a verziót, a függőségeket, a licenceket és a kódtár elérési útját, futtassa a következő szkriptet.

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

A kimenet az R-ből származik installed.packages() , és eredményhalmazként lesz visszaadva.

Results

Telepített csomagok az R-ben

Következő lépések

Ha tudni szeretné, hogyan használhat adatstruktúrákat az R sql-gépi tanulással való használatakor, kövesse az alábbi rövid útmutatót: