Sdílet prostřednictvím


Rychlý start: Spuštění jednoduchých skriptů jazyka R pomocí strojového učení SQL

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL Managed Instance

V tomto rychlém startu spustíte sadu jednoduchých skriptů R pomocí služby SQL Server Machine Learning Services nebo v clusterech s velkými objemy dat. Naučíte se používat uloženou proceduru sp_execute_external_script ke spuštění skriptu v instanci SQL Serveru.

V tomto rychlém startu spustíte sadu jednoduchých skriptů R pomocí služby SQL Server Machine Learning Services. Naučíte se používat uloženou proceduru sp_execute_external_script ke spuštění skriptu v instanci SQL Serveru.

V tomto rychlém startu spustíte sadu jednoduchých skriptů R pomocí služby SQL Server R Services. Naučíte se používat uloženou proceduru sp_execute_external_script ke spuštění skriptu v instanci SQL Serveru.

V tomto rychlém startu spustíte sadu jednoduchých skriptů R pomocí služby Azure SQL Managed Instance Machine Learning Services. Naučíte se používat uloženou proceduru sp_execute_external_script ke spuštění skriptu v databázi.

Požadavky

Ke spuštění tohoto rychlého startu potřebujete následující požadavky.

  • Nástroj pro spouštění dotazů SQL, které obsahují skripty jazyka R. V tomto rychlém startu se používá Azure Data Studio.

Spuštění jednoduchého skriptu

Pokud chcete spustit skript jazyka R, předáte ho jako argument systémové uložené proceduře sp_execute_external_script. Tato systémová uložená procedura spustí modul runtime R, předává data do jazyka R, bezpečně spravuje relace uživatelů R a vrací všechny výsledky klientovi.

V následujících krocích spustíte tento příklad skriptu R:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Otevřete Azure Data Studio a připojte se k serveru.

  2. Předejte kompletní skript jazyka R uložené proceduře sp_execute_external_script .

    Skript se předává prostřednictvím argumentu @script . Vše uvnitř argumentu @script musí být platný kód R.

    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. Vypočítá se správný výsledek a funkce R print vrátí výsledek do okna Zprávy .

    Mělo by to vypadat nějak takto.

    Results

    STDOUT message(s) from external script:
    0.5 2
    

Spuštění skriptu Hello World

Typický ukázkový skript je takový, který pouze vypíše řetězec "Hello World". Spusťte následující příkaz.

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

Vstupy pro uloženou proceduru sp_execute_external_script zahrnují:

Vstup Description
@language definuje jazykové rozšíření, které se má volat, v tomto případě R.
@script definuje příkazy předané modulu runtime R. Celý skript jazyka R musí být v tomto argumentu uzavřený jako text Unicode. Můžete také přidat text do proměnné typu nvarchar a potom volat proměnnou.
@input_data_1 data vrácená dotazem, předána modulu runtime R, který vrací data jako datový rámec
S SADAMI VÝSLEDKŮ klauzule definuje schéma vrácené tabulky dat a přidá "Hello World" jako název sloupce , int pro datový typ.

Příkaz vypíše následující text:

Hello World
1

Použití vstupů a výstupů

Ve výchozím nastavení sp_execute_external_script přijímá jako vstup jednu datovou sadu, která obvykle zadáte ve formě platného dotazu SQL. Pak jako výstup vrátí jeden datový rámec R.

Prozatím použijeme výchozí vstupní a výstupní proměnné sp_execute_external_script: InputDataSet a OutputDataSet.

  1. Vytvořte malou tabulku testovacích dat.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Pomocí příkazu SELECT zadejte dotaz na tabulku.

    SELECT *
    FROM RTestData
    

    Results

    Obsah tabulky RTestData

  3. Spusťte následující skript jazyka R. Načte data z tabulky pomocí SELECT příkazu, předá je přes modul runtime jazyka R a vrátí data jako datový rámec. Klauzule WITH RESULT SETS definuje schéma vrácené tabulky dat pro SQL a přidá název sloupce 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));
    

    Results

    Výstup ze skriptu jazyka R, který vrací data z tabulky

  4. Teď změníme názvy vstupních a výstupních proměnných. Výchozí názvy vstupních a výstupních proměnných jsou InputDataSet a OutputDataSet, tento skript změní názvy na SQL_in a 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));
    

    Všimněte si, že R rozlišuje malá a velká písmena. Vstupní a výstupní proměnné použité ve skriptu jazyka R (SQL_out, SQL_in) musí odpovídat názvům definovaným @input_data_1_name a @output_data_1_namevčetně písmen.

    Návod

    Jako parametr lze předat pouze jednu vstupní datovou sadu a vy můžete vrátit pouze jednu datovou sadu. Můžete ale volat jiné datové sady z kódu R a kromě datové sady můžete vrátit i výstupy jiných typů. Můžete také přidat klíčové slovo OUTPUT do libovolného parametru, aby se vrátil s výsledky.

  5. Můžete také generovat hodnoty pouze pomocí skriptu R bez vstupních dat (@input_data_1 je nastavena na prázdnou hodnotu).

    Následující skript vypíše text "hello" a "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));
    

    Results

    Dotazování výsledků pomocí <span class= @script jako vstupu" />

Kontrola verze jazyka R

Pokud chcete zjistit, která verze jazyka R je nainstalovaná, spusťte následující skript.

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

Funkce R print vrátí verzi do okna Zprávy . V následujícím příkladu výstupu vidíte, že v tomto případě je nainstalována verze R 3.4.4.

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

Výpis balíčků R

Microsoft poskytuje řadu balíčků R předinstalovaných se službou Machine Learning Services.

Společnost Microsoft poskytuje řadu balíčků R předinstalovaných se službami R.

Pokud chcete zobrazit seznam nainstalovaných balíčků R, včetně informací o verzi, závislostech, licenci a cestě knihovny, spusťte následující skript.

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

Výstup pochází z installed.packages() jazyka R a vrátí se jako sada výsledků.

Results

Nainstalované balíčky v R

Další kroky

Pokud chcete zjistit, jak používat datové struktury při použití jazyka R se strojovým učením SQL, postupujte podle tohoto rychlého startu: