Краткое руководство. Выполнение простых сценариев R с использованием машинного обучения SQLQuickstart: Run simple R scripts with SQL machine learning

Применимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) и более поздние версии ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed InstanceПрименимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) and later ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance

В этом кратком руководстве вы запустите ряд простых сценариев R с помощью Служб машинного обучения SQL Server или в Кластерах больших данных.In this quickstart, you'll run a set of simple R scripts using SQL Server Machine Learning Services or on Big Data Clusters. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

В этом кратком руководстве вы запустите несколько простых скриптов R, используя Службы машинного обучения SQL Server.In this quickstart, you'll run a set of simple R scripts using SQL Server Machine Learning Services. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

В этом кратком руководстве вы запустите ряд простых сценариев R, используя службы SQL Server R Services.In this quickstart, you'll run a set of simple R scripts using SQL Server R Services. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in a SQL Server instance.

В этом кратком руководстве вы запустите ряд простых скриптов R, используя Службы машинного обучения в управляемом экземпляре SQL Azure.In this quickstart, you'll run a set of simple R scripts using Azure SQL Managed Instance Machine Learning Services. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в базе данных.You'll learn how to use the stored procedure sp_execute_external_script to execute the script in your database.

Предварительные требованияPrerequisites

Для работы с этим кратким руководством необходимо следующее.You need the following prerequisites to run this quickstart.

  • Инструмент для выполнения SQL-запросов, содержащих сценарии R.A tool for running SQL queries that contain R scripts. В этом кратком руководстве используется Azure Data Studio.This quickstart uses Azure Data Studio.

Выполнение простого сценарияRun a simple script

Чтобы выполнить сценарий R, необходимо передать его в качестве аргумента в системную хранимую процедуру sp_execute_external_script.To run an R script, you'll pass it as an argument to the system stored procedure, sp_execute_external_script. Эта системная хранимая процедура запускает среду выполнения R, передает данные в R, безопасно управляет пользовательскими сеансами R и возвращает результаты клиенту.This system stored procedure starts the R runtime, passes data to R, manages R user sessions securely, and returns any results to the client.

В следующих шагах вы запустите этот пример сценария R.In the following steps, you'll run this example R script:

a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
  1. Откройте Azure Data Studio и подключитесь к своему серверу.Open Azure Data Studio and connect to your server.

  2. Передайте весь сценарий R в хранимую процедуру sp_execute_external_script.Pass the complete R script to the sp_execute_external_script stored procedure.

    Сценарий передается с помощью аргумента @script.The script is passed through the @script argument. Все, что находится внутри аргумента @script, должно быть допустимым кодом R.Everything inside the @script argument must be valid R code.

    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. Далее вычисляется правильный результат, и функция R print возвращает результат в окне Сообщения.The correct result is calculated and the R print function returns the result to the Messages window.

    Он должен выглядеть примерно так.It should look something like this.

    РезультатыResults

    STDOUT message(s) from external script:
    0.5 2
    

Выполнение сценария Hello WorldRun a Hello World script

Типичный пример — сценарий, который просто выводит строку "Hello World".A typical example script is one that just outputs the string "Hello World". Выполните следующую команду.Run the following command.

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 передаются следующие входные данные.Inputs to the sp_execute_external_script stored procedure include:

Входные данныеInput ОписаниеDescription
@language Определяет вызываемое расширение языка (в данном случае R).defines the language extension to call, in this case, R
@script Определяет команды, которые передаются в среду выполнения R.defines the commands passed to the R runtime. Весь сценарий R должен содержаться в этом аргументе в виде текста в Юникоде.Your entire R script must be enclosed in this argument, as Unicode text. Также можно добавить текст в переменную типа nvarchar, а затем вызвать ее.You could also add the text to a variable of type nvarchar and then call the variable
@input_data_1 Данные, возвращаемые запросом, передаются в среду выполнения R, которая возвращает их в виде кадра данных.data returned by the query, passed to the R runtime, which returns the data as a data frame
WITH RESULT SETSWITH RESULT SETS Это предложение определяет схему возвращаемой таблицы данных. В данном случае добавляется "Hello World" в качестве имени столбца и int в качестве типа данных.clause defines the schema of the returned data table, adding "Hello World" as the column name, int for the data type

Эта команда выводит следующий текст:The command outputs the following text:

Hello WorldHello World
11

Использование входных и выходных данныхUse inputs and outputs

По умолчанию процедура sp_execute_external_script принимает в качестве входных данных один набор данных, обычно предоставляемый в виде допустимого SQL-запроса.By default, sp_execute_external_script accepts a single dataset as input, which typically you supply in the form of a valid SQL query. Затем она возвращает один кадр данных R в качестве выходных данных.It then returns a single R data frame as output.

Сейчас мы будем использовать заданные по умолчанию входные и выходные переменные процедуры sp_execute_external_script: InputDataSet и OutputDataSet.For now, let's use the default input and output variables of sp_execute_external_script: InputDataSet and OutputDataSet.

  1. Создайте небольшую таблицу тестовых данных.Create a small table of test data.

    CREATE TABLE RTestData (col1 INT NOT NULL)
    
    INSERT INTO RTestData
    VALUES (1);
    
    INSERT INTO RTestData
    VALUES (10);
    
    INSERT INTO RTestData
    VALUES (100);
    GO
    
  2. Используйте инструкцию SELECT для запроса в эту таблицу.Use the SELECT statement to query the table.

    SELECT *
    FROM RTestData
    

    РезультатыResults

    Содержимое таблицы RTestData

  3. Выполните следующий сценарий R.Run the following R script. Он получает данные из таблицы с помощью инструкции SELECT, передает их через среду выполнения R и возвращает результаты в виде кадра данных.It retrieves the data from the table using the SELECT statement, passes it through the R runtime, and returns the data as a data frame. Предложение WITH RESULT SETS определяет схему таблицы возвращаемых данных для SQL Server, добавляя имя столбца NewColName.The WITH RESULT SETS clause defines the schema of the returned data table for SQL, adding the column name 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

    Выходные данные сценария R, возвращающего данные из таблицы

  4. Теперь изменим имена входных и выходных переменных.Now let's change the names of the input and output variables. Имена входных и выходных переменных по умолчанию°— InputDataSet и OutputDataSet. Сценарий изменяет их на SQL_in и SQL_out:The default input and output variable names are InputDataSet and OutputDataSet, this script changes the names to SQL_in and 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));
    

    Обратите внимание, что в R учитывается регистр.Note that R is case-sensitive. Входные и выходные переменные, используемые в сценарии R (SQL_out, SQL_in), должны соответствовать именам, определенным в аргументах @input_data_1_name и @output_data_1_name, включая регистр.The input and output variables used in the R script (SQL_out, SQL_in) need to match the names defined with @input_data_1_name and @output_data_1_name, including case.

    Совет

    В качестве параметра может быть передан только один входной набор данных, и можно возвращать только один набор данных.Only one input dataset can be passed as a parameter, and you can return only one dataset. Однако вы можете вызывать другие наборы данных из кода R, а также возвращать выходные данные других типов в дополнение к набору данных.However, you can call other datasets from inside your R code and you can return outputs of other types in addition to the dataset. Вы также можете добавить ключевое слово OUTPUT к любому параметру, чтобы он возвращался с результатами.You can also add the OUTPUT keyword to any parameter to have it returned with the results.

  5. Также можно формировать значения только с помощью сценария R, без каких-либо входных данных (в аргументе @input_data_1 задано пустое значение).You also can generate values just using the R script with no input data (@input_data_1 is set to blank).

    Следующий сценарий выводит текст "hello" и "world".The following script outputs the text "hello" and "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

    Результаты запроса с использованием @script в качестве входных данных

Проверка версии RCheck R version

Если вы хотите узнать, какая версия R установлена, выполните приведенный ниже скрипт.If you would like to see which version of R is installed, run the following script.

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

Функция R print возвращает версию в окне Сообщения.The R print function returns the version to the Messages window. В приведенном ниже примере можно видеть, что в данном случае установлен R версии 3.4.4.In the example output below, you can see that in this case, R version 3.4.4 is installed.

Результаты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

Получение списка пакетов RList R packages

Корпорация Майкрософт предоставляет ряд пакетов R, которые устанавливаются вместе со Службами машинного обучения.Microsoft provides a number of R packages pre-installed with Machine Learning Services.

Корпорация Майкрософт предоставляет ряд пакетов R, которые устанавливаются вместе со службами R Services.Microsoft provides a number of R packages pre-installed with R Services.

Чтобы просмотреть список установленных пакетов R, включая сведения о версии, зависимостях, лицензии и пути к библиотеке, выполните следующий сценарий.To see a list of which R packages are installed, including version, dependencies, license, and library path information, run the following script.

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

Выходные данные installed.packages() в R и возвращаются в виде результирующего набора.The output is from installed.packages() in R and is returned as a result set.

РезультатыResults

Установленные пакеты в R

Дальнейшие действияNext steps

Сведения о том, как применять структуры данных при использовании R в машинном обучении SQL, см. в этом кратком руководстве:To learn how to use data structures when using R with SQL machine learning, follow this quickstart: