Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2016 (13.x) и более поздним версиям
Azure SQL Managed Instance
В этом кратком руководстве вы запустите ряд простых сценариев R с помощью Служб машинного обучения SQL Server или в Кластерах больших данных. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.
В этом кратком руководстве вы запустите несколько простых скриптов R, используя Службы машинного обучения SQL Server. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.
В этом кратком руководстве вы запустите ряд простых сценариев R, используя службы SQL Server R Services. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в экземпляре SQL Server.
В этом кратком руководстве вы запустите ряд простых скриптов R, используя Службы машинного обучения в управляемом экземпляре SQL Azure. Также вы узнаете, как применить хранимую процедуру sp_execute_external_script для выполнения скрипта в базе данных.
Необходимые компоненты
Для работы с этим кратким руководством необходимо следующее.
- Службы машинного обучения SQL Server. Сведения об установке служб машинного обучения см. в руководстве по установке для Windows или руководстве по установке для Linux. Можно также включить Службы машинного обучения в кластерах больших данных SQL Server.
- Службы машинного обучения SQL Server. Сведения об установке служб машинного обучения см. в руководстве по установке для Windows.
- Службы R для SQL Server 2016. Сведения об установке служб R Services см. в руководстве по установке для Windows.
- Службы машинного обучения в Управляемом экземпляре SQL Azure. Дополнительные сведения см. в статье Общие сведения о службах машинного обучения в управляемом экземпляре SQL Azure.
- Инструмент для выполнения SQL-запросов, содержащих сценарии R. В этом кратком руководстве используется Azure Data Studio.
Выполнение простого сценария
Чтобы выполнить сценарий R, необходимо передать его в качестве аргумента в системную хранимую процедуру sp_execute_external_script. Эта системная хранимая процедура запускает среду выполнения R, передает данные в R, безопасно управляет пользовательскими сеансами R и возвращает результаты клиенту.
В следующих шагах вы запустите этот пример сценария R.
a <- 1
b <- 2
c <- a/b
d <- a*b
print(c(c, d))
Откройте Azure Data Studio и подключитесь к своему серверу.
Передайте весь сценарий R в хранимую процедуру
sp_execute_external_script.Сценарий передается с помощью аргумента
@script. Все, что находится внутри аргумента@script, должно быть допустимым кодом 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)) 'Далее вычисляется правильный результат, и функция R
printвозвращает результат в окне Сообщения.Файл должен выглядеть следующим образом:
Результаты
STDOUT message(s) from external script: 0.5 2
Выполнение сценария Hello World
Типичный пример — сценарий, который просто выводит строку "Hello World". Выполните следующую команду.
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 передаются следующие входные данные.
| Входные данные | Description |
|---|---|
| @language | Определяет вызываемое расширение языка (в данном случае R). |
| @script | Определяет команды, которые передаются в среду выполнения R. Весь сценарий R должен содержаться в этом аргументе в виде текста в Юникоде. Также можно добавить текст в переменную типа nvarchar, а затем вызвать ее. |
| @input_data_1 | Данные, возвращаемые запросом, передаются в среду выполнения R, которая возвращает их в виде кадра данных. |
| С РЕЗУЛЬТИРУЮЩИМИ НАБОРАМИ | Это предложение определяет схему возвращаемой таблицы данных. В данном случае добавляется "Hello World" в качестве имени столбца и int в качестве типа данных. |
Эта команда выводит следующий текст:
| Hello World |
|---|
| 1 |
Использование входных и выходных данных
По умолчанию процедура sp_execute_external_script принимает в качестве входных данных один набор данных, обычно предоставляемый в виде допустимого SQL-запроса. Затем она возвращает один кадр данных R в качестве выходных данных.
Теперь давайте будем использовать входные и выходные переменные sp_execute_external_scriptпо умолчанию: InputDataSet и OutputDataSet.
Создайте небольшую таблицу тестовых данных.
CREATE TABLE RTestData (col1 INT NOT NULL) INSERT INTO RTestData VALUES (1); INSERT INTO RTestData VALUES (10); INSERT INTO RTestData VALUES (100); GOИспользуйте инструкцию
SELECTдля запроса в эту таблицу.SELECT * FROM RTestDataРезультаты
Выполните следующий сценарий R. Он получает данные из таблицы с помощью инструкции
SELECT, передает их через среду выполнения R и возвращает результаты в виде кадра данных. ПредложениеWITH RESULT SETSопределяет схему таблицы возвращаемых данных для SQL Server, добавляя имя столбца 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));Результаты
Теперь изменим имена входных и выходных переменных. Имена входных и выходных переменных по умолчанию°— InputDataSet и OutputDataSet. Сценарий изменяет их на SQL_in и 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 учитывается регистр. Входные и выходные переменные, используемые в сценарии R (SQL_out, SQL_in), должны соответствовать именам, определенным в аргументах
@input_data_1_nameи@output_data_1_name, включая регистр.Совет
В качестве параметра может быть передан только один входной набор данных, и можно возвращать только один набор данных. Однако вы можете вызывать другие наборы данных из кода R, а также возвращать выходные данные других типов в дополнение к набору данных. Вы также можете добавить ключевое слово OUTPUT к любому параметру, чтобы он возвращался с результатами.
Также можно формировать значения только с помощью сценария R, без каких-либо входных данных (в аргументе
@input_data_1задано пустое значение).Следующий сценарий выводит текст "hello" и "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));Результаты
@script как входные данные" />
Проверка версии R
Если вы хотите узнать, какая версия R установлена, выполните приведенный ниже скрипт.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'print(version)';
GO
Функция R print возвращает версию в окне Сообщения. В приведенном ниже примере можно видеть, что в данном случае установлен R версии 3.4.4.
Результаты
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
Корпорация Майкрософт предоставляет ряд пакетов R, которые устанавливаются вместе со Службами машинного обучения.
Корпорация Майкрософт предоставляет ряд пакетов R, которые устанавливаются вместе со службами R Services.
Чтобы просмотреть список установленных пакетов R, включая сведения о версии, зависимостях, лицензии и пути к библиотеке, выполните следующий сценарий.
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 и возвращаются в виде результирующего набора.
Результаты
Следующие шаги
Сведения о том, как применять структуры данных при использовании R в машинном обучении SQL, см. в этом кратком руководстве: