Udostępnij za pomocą


Szybki start: uruchamianie prostych skryptów języka R przy użyciu uczenia maszynowego SQL

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje usługi Azure SQL Managed Instance

W tym szybkim przewodniku startowym uruchomisz zestaw prostych skryptów języka R przy użyciu usług SQL Server Machine Learning Services lub klastrów danych masowych. Dowiesz się, jak używać procedury składowanej sp_execute_external_script do wykonywania skryptu w wystąpieniu programu SQL Server.

W tym przewodniku Szybki start uruchomisz zestaw prostych skryptów języka R przy użyciu usług SQL Server Machine Learning Services. Dowiesz się, jak używać procedury składowanej sp_execute_external_script do wykonywania skryptu w wystąpieniu programu SQL Server.

W tym przewodniku szybkiego startu wykonasz zestaw prostych skryptów R przy użyciu usług R programu SQL Server. Dowiesz się, jak używać procedury składowanej sp_execute_external_script do wykonywania skryptu w wystąpieniu programu SQL Server.

W tym przewodniku uruchomisz proste skrypty języka R przy użyciu Usług Azure SQL Managed Instance Machine Learning Services. Dowiesz się, jak używać procedury składowanej sp_execute_external_script do wykonywania skryptu w bazie danych.

Wymagania wstępne

Aby uruchomić szybki start, potrzebne są następujące prerekwizyty.

  • Narzędzie do uruchamiania zapytań SQL zawierających skrypty języka R. W tym przewodniku Szybki start jest używany program Azure Data Studio.

Uruchamianie prostego skryptu

Aby uruchomić skrypt języka R, przekażesz go jako argument do procedury składowanej systemu, sp_execute_external_script. Ta procedura składowana systemu uruchamia środowisko uruchomieniowe języka R, przekazuje dane do języka R, bezpiecznie zarządza sesjami użytkownika języka R i zwraca wszystkie wyniki do klienta.

W poniższych krokach uruchomisz ten przykładowy skrypt języka R:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Otwórz narzędzie Azure Data Studio i połącz się z serwerem.

  2. Przekaż pełny skrypt języka R do sp_execute_external_script procedury składowanej.

    Skrypt jest przekazywany przez @script argument . Wszystko wewnątrz argumentu @script musi być prawidłowym kodem języka 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. Prawidłowy wynik jest obliczany, a funkcja języka R print zwraca wynik do okna Komunikaty .

    Powinno to wyglądać mniej więcej tak.

    Results

    STDOUT message(s) from external script:
    0.5 2
    

Uruchamianie skryptu Hello World

Typowy przykładowy skrypt to taki, który po prostu generuje ciąg "Hello World". Uruchom następujące polecenie.

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

sp_execute_external_script Dane wejściowe procedury składowanej obejmują:

Input Description
@language definiuje rozszerzenie języka do wywołania, w tym przypadku R
@script definiuje polecenia przekazywane do środowiska uruchomieniowego języka R. Cały skrypt języka R musi być ujęty w ten argument jako tekst Unicode. Możesz również dodać tekst do zmiennej typu nvarchar , a następnie wywołać zmienną
@input_data_1 dane zwrócone przez zapytanie przekazane do środowiska uruchomieniowego języka R, które zwraca dane jako ramkę danych
Z ZESTAWAMI WYNIKÓW Klauzula definiuje schemat zwracanej tabeli danych, dodając "Hello World" jako nazwę kolumny int dla typu danych

Polecenie zwraca następujący tekst:

Hello world
1

Używanie danych wejściowych i wyjściowych

Domyślnie sp_execute_external_script przyjmuje pojedynczy zestaw danych jako dane wejściowe, które zazwyczaj są dostarczane w postaci prawidłowego zapytania SQL. Następnie zwraca pojedynczą ramkę danych języka R jako dane wyjściowe.

Na razie użyjemy domyślnych zmiennych wejściowych i wyjściowych sp_execute_external_script: InputDataSet i OutputDataSet.

  1. Utwórz małą tabelę danych testowych.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Użyj instrukcji , SELECT aby wysłać zapytanie do tabeli.

    SELECT *
    FROM RTestData
    

    Results

    Zawartość tabeli RTestData

  3. Uruchom następujący skrypt języka R. Pobiera dane z tabeli przy użyciu SELECT instrukcji , przekazuje je przez środowisko uruchomieniowe języka R i zwraca dane jako ramkę danych. Klauzula WITH RESULT SETS definiuje schemat zwracanej tabeli danych dla języka SQL, dodając nazwę kolumny 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

    Dane wyjściowe ze skryptu języka R, który zwraca dane z tabeli

  4. Teraz zmieńmy nazwy zmiennych wejściowych i wyjściowych. Domyślne nazwy zmiennych wejściowych i wyjściowych to InputDataSet i OutputDataSet. Ten skrypt zmienia nazwy na SQL_in i 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));
    

    Należy pamiętać, że w języku R jest rozróżniana wielkość liter. Zmienne wejściowe i wyjściowe używane w skrypcie języka R (SQL_out, SQL_in) muszą być zgodne z nazwami zdefiniowanymi za pomocą @input_data_1_name i @output_data_1_name, z uwzględnieniem wielkości liter.

    Wskazówka

    Jako parametr można przekazać tylko jeden wejściowy zestaw danych i można zwrócić tylko jeden zestaw danych. Można jednak wywoływać inne zestawy danych z wewnątrz kodu języka R i zwracać dane wyjściowe innych typów oprócz zestawu danych. Możesz również dodać słowo kluczowe OUTPUT do dowolnego parametru, aby zwrócił je z wynikami.

  5. Możesz również wygenerować wartości tylko przy użyciu skryptu języka R bez danych wejściowych (@input_data_1 jest ustawiona na wartość pustą).

    Poniższy skrypt zwraca tekst "hello" i "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

    Wyniki zapytań przy użyciu klasy <span= @script jako danych wejściowych" />

Sprawdzanie wersji języka R

Jeśli chcesz zobaczyć, która wersja języka R jest zainstalowana, uruchom następujący skrypt.

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

Funkcja języka R print zwraca wersję do okna Komunikaty . W poniższych przykładowych danych wyjściowych widać, że w tym przypadku zainstalowano język R w wersji 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

Wyświetlanie listy pakietów języka R

Firma Microsoft udostępnia wiele pakietów języka R wstępnie zainstalowanych za pomocą usług Machine Learning Services.

Firma Microsoft udostępnia wiele pakietów języka R wstępnie zainstalowanych z usługami języka R.

Aby wyświetlić listę zainstalowanych pakietów języka R, w tym informacje o wersji, zależnościach, licencji i ścieżce biblioteki, uruchom następujący skrypt.

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

Dane wyjściowe pochodzą z installed.packages() języka R i są zwracane jako zestaw wyników.

Results

Zainstalowane pakiety w języku R

Dalsze kroki

Aby dowiedzieć się, jak używać struktur danych podczas korzystania z języka R z uczeniem maszynowym SQL, wykonaj czynności opisane w tym przewodniku Szybki start: