sp_execute_external_script (Transact-SQL)sp_execute_external_script (Transact-SQL)

Применимо к: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

Хранимая процедура sp_execute_external_script выполняет скрипт, предоставленный в качестве входного аргумента для процедуры, и используется с службы машинного обучения и расширениями языка.The sp_execute_external_script stored procedure executes a script provided as an input argument to the procedure, and is used with Machine Learning Services and Language Extensions.

Для Службы машинного обучения, Python и R поддерживают языки.For Machine Learning Services, Python and R are supported languages. Для расширений языка Java поддерживается, но должна быть определена с помощью создания внешнего языка.For Language Extensions, Java is supported but must be defined with CREATE EXTERNAL LANGUAGE.

Для выполнения sp_execute_external_scriptнеобходимо сначала установить службы машинного обучения или расширения языка.To execute sp_execute_external_script, you must first install Machine Learning Services or Language Extensions. Дополнительные сведения см. в статьях установка SQL Server службы машинного обучения (Python и R) в Windows и Linuxили Установка расширений языка SQL Server в Windows и Linux.For more information, see Install SQL Server Machine Learning Services (Python and R) on Windows and Linux, or Install SQL Server Language Extensions on Windows and Linux.

Хранимая процедура sp_execute_external_script выполняет скрипт, предоставленный в качестве входного аргумента для процедуры, и используется с Службы машинного обучения в SQL Server 2017.The sp_execute_external_script stored procedure executes a script provided as an input argument to the procedure, and is used with Machine Learning Services on SQL Server 2017.

Для Службы машинного обучения, Python и R поддерживают языки.For Machine Learning Services, Python and R are supported languages.

Для выполнения sp_execute_external_scriptнеобходимо сначала установить службы машинного обучения.To execute sp_execute_external_script, you must first install Machine Learning Services. Дополнительные сведения см. в разделе Install SQL Server службы машинного обучения (Python и R) в Windows.For more information, see Install SQL Server Machine Learning Services (Python and R) on Windows.

Хранимая процедура sp_execute_external_script выполняет скрипт, предоставленный в качестве входного аргумента для процедуры, и используется со службами R в SQL Server 2016.The sp_execute_external_script stored procedure executes a script provided as an input argument to the procedure, and is used with R Services on SQL Server 2016.

Для служб R поддерживается язык r .For R Services, R is the supported language.

Для выполнения sp_execute_external_scriptнеобходимо сначала установить службы R Services.To execute sp_execute_external_script, you must first install R Services. Дополнительные сведения см. в разделе Install SQL Server службы машинного обучения (Python и R) в Windows.For more information, see Install SQL Server Machine Learning Services (Python and R) on Windows.

Хранимая процедура sp_execute_external_script выполняет скрипт, предоставленный в качестве входного аргумента для процедуры, и используется с службы машинного обучения в управляемый экземпляр Azure SQL.The sp_execute_external_script stored procedure executes a script provided as an input argument to the procedure, and is used with Machine Learning Services in Azure SQL Managed Instance.

Для Службы машинного обучения, Python и R поддерживают языки.For Machine Learning Services, Python and R are supported languages.

Для выполнения sp_execute_external_scriptнеобходимо сначала включить службы машинного обучения.To execute sp_execute_external_script, you must first enable Machine Learning Services. Дополнительные сведения см. в документации по службы машинного обучения в Azure SQL управляемый экземпляр.For more information, see the Machine Learning Services in Azure SQL Managed Instance documentation.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

sp_execute_external_script
    @language = N'language',
    @script = N'script'  
    [ , @input_data_1 = N'input_data_1' ]
    [ , @input_data_1_name = N'input_data_1_name' ]  
    [ , @input_data_1_order_by_columns = N'input_data_1_order_by_columns' ]
    [ , @input_data_1_partition_by_columns = N'input_data_1_partition_by_columns' ]  
    [ , @output_data_1_name = N'output_data_1_name' ]  
    [ , @parallel = 0 | 1 ]  
    [ , @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ] 
    [ , @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ]

Синтаксис для SQL Server 2017 и более ранних версийSyntax for SQL Server 2017 and earlier

sp_execute_external_script   
    @language = N'language',   
    @script = N'script'  
    [ , @input_data_1 = N'input_data_1' ]   
    [ , @input_data_1_name = N'input_data_1_name' ]  
    [ , @output_data_1_name = N'output_data_1_name' ]  
    [ , @parallel = 0 | 1 ]  
    [ , @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ] 
    [ , @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ]

АргументыArguments

** @ Language** = N 'язык'@language = N'language'

Указывает язык скрипта.Indicates the script language. язык имеет тип sysname.language is sysname. Допустимые значения: R, Pythonи любой язык, определенный с помощью создания внешнего языка (например, Java).Valid values are R, Python, and any language defined with CREATE EXTERNAL LANGUAGE (for example, Java).

Указывает язык скрипта.Indicates the script language. язык имеет тип sysname.language is sysname. В SQL Server 2017 допустимыми значениями являются R и Python.In SQL Server 2017, valid values are R and Python.

Указывает язык скрипта.Indicates the script language. язык имеет тип sysname.language is sysname. В SQL Server 2016 единственным допустимым значением является R.In SQL Server 2016, the only valid value is R.

Указывает язык скрипта.Indicates the script language. язык имеет тип sysname.language is sysname. В Управляемый экземпляр SQL Azure допустимыми значениями являются R и Python.In Azure SQL Managed Instance, valid values are R and Python.

** @ script** = N "Скрипт" внешний язык скрипта, указанный в качестве входных литералов или переменных.@script = N'script' External language script specified as a literal or variable input. script имеет тип nvarchar (max).script is nvarchar(max).

[ @input_data_1 = N'input_data_1' ] Задает входные данные, используемые внешним скриптом в форме Transact-SQLTransact-SQL запроса.[ @input_data_1 = N'input_data_1' ] Specifies the input data used by the external script in the form of a Transact-SQLTransact-SQL query. Тип данных input_data_1nvarchar (max).The data type of input_data_1 is nvarchar(max).

[ @input_data_1_name = N'input_data_1_name' ] Задает имя переменной, используемой для представления запроса, определенного параметром @input_data_1 .[ @input_data_1_name = N'input_data_1_name' ] Specifies the name of the variable used to represent the query defined by @input_data_1. Тип данных переменной во внешнем скрипте зависит от языка.The data type of the variable in the external script depends on the language. В случае с R входная переменная является кадром данных.In case of R, the input variable is a data frame. В случае Python входные данные должны быть табличными.In the case of Python, input must be tabular. input_data_1_name имеет тип sysname.input_data_1_name is sysname. Значение по умолчанию — InputDataSet.Default value is InputDataSet.

[ @input_data_1_order_by_columns = N'input_data_1_order_by_columns' ] Используется для построения моделей отдельных секций.[ @input_data_1_order_by_columns = N'input_data_1_order_by_columns' ] Used to build per-partition models. Указывает имя столбца, используемого для упорядочивания результирующего набора, например по названию продукта.Specifies the name of the column used to order the result set, for example by product name. Тип данных переменной во внешнем скрипте зависит от языка.The data type of the variable in the external script depends on the language. В случае с R входная переменная является кадром данных.In case of R, the input variable is a data frame. В случае Python входные данные должны быть табличными.In the case of Python, input must be tabular.

[ @input_data_1_partition_by_columns = N'input_data_1_partition_by_columns' ] Используется для построения моделей отдельных секций.[ @input_data_1_partition_by_columns = N'input_data_1_partition_by_columns' ] Used to build per-partition models. Указывает имя столбца, используемого для сегментирования данных, таких как географическая область или дата.Specifies the name of the column used to segment data, such as geographic region or date. Тип данных переменной во внешнем скрипте зависит от языка.The data type of the variable in the external script depends on the language. В случае с R входная переменная является кадром данных.In case of R, the input variable is a data frame. В случае Python входные данные должны быть табличными.In the case of Python, input must be tabular.

[ @output_data_1_name = N'output_data_1_name' ] Задает имя переменной во внешнем скрипте, которая содержит данные, возвращаемые SQL ServerSQL Server при завершении вызова хранимой процедуры.[ @output_data_1_name = N'output_data_1_name' ] Specifies the name of the variable in the external script that contains the data to be returned to SQL ServerSQL Server upon completion of the stored procedure call. Тип данных переменной во внешнем скрипте зависит от языка.The data type of the variable in the external script depends on the language. Для R выходные данные должны быть кадром данных.For R, the output must be a data frame. Для Python выходные данные должны быть кадром данных Pandas.For Python, the output must be a pandas data frame. output_data_1_name имеет тип sysname.output_data_1_name is sysname. Значение по умолчанию — OutputDataSet.Default value is OutputDataSet.

[ @parallel = 0 | 1 ] Включите параллельное выполнение скриптов R, задав @parallel для параметра значение 1.[ @parallel = 0 | 1 ] Enable parallel execution of R scripts by setting the @parallel parameter to 1. Значение по умолчанию для этого параметра равно 0 (без параллелизма).The default for this parameter is 0 (no parallelism). Если @parallel = 1 и выходные данные передаются непосредственно на клиентский компьютер, WITH RESULT SETS предложение является обязательным, и необходимо указать выходную схему.If @parallel = 1 and the output is being streamed directly to the client machine, then the WITH RESULT SETS clause is required and an output schema must be specified.

  • Для скриптов R, которые не используют функции RevoScaleR, использование @parallel параметра может оказаться полезным для обработки больших наборов данных, предполагая, что скрипт может быть тривиальным.For R scripts that do not use RevoScaleR functions, using the @parallel parameter can be beneficial for processing large datasets, assuming the script can be trivially parallelized. Например, при использовании predict функции R с моделью для создания новых прогнозов установите в @parallel = 1 качестве подсказки для обработчика запросов.For example, when using the R predict function with a model to generate new predictions, set @parallel = 1 as a hint to the query engine. Если запрос можно выполнить параллельно, строки распределяются в соответствии с параметром MAXDOP .If the query can be parallelized, rows are distributed according to the MAXDOP setting.

  • Для скриптов R, использующих функции RevoScaleR, параллельная обработка обрабатывается автоматически, и не следует указывать @parallel = 1 для вызова sp_execute_external_script .For R scripts that use RevoScaleR functions, parallel processing is handled automatically and you should not specify @parallel = 1 to the sp_execute_external_script call.

[ @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ] Список объявлений входных параметров, используемых во внешнем скрипте.[ @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ] A list of input parameter declarations that are used in the external script.

[ @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ] Список значений входных параметров, используемых внешним скриптом.[ @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ] A list of values for the input parameters used by the external script.

КомментарииRemarks

Важно!

Дерево запросов управляется машинным обучением SQL, и пользователи не могут выполнять произвольные операции с запросом.The query tree is controlled by SQL machine learning and users cannot perform arbitrary operations on the query.

Используйте sp_execute_external_script для выполнения скриптов, написанных на поддерживаемом языке.Use sp_execute_external_script to execute scripts written in a supported language. Поддерживаемые языки — это Python и R , используемые с службы машинного обучения, а также любой язык, определенный с помощью создания внешнего языка (например, Java), используемого с расширениями языка.Supported languages are Python and R used with Machine Learning Services, and any language defined with CREATE EXTERNAL LANGUAGE (for example, Java) used with Language Extensions.

Используйте sp_execute_external_script для выполнения скриптов, написанных на поддерживаемом языке.Use sp_execute_external_script to execute scripts written in a supported language. Поддерживаемые языки — Python и R в SQL Server 2017 службы машинного обучения.Supported languages are Python and R in SQL Server 2017 Machine Learning Services.

Используйте sp_execute_external_script для выполнения скриптов, написанных на поддерживаемом языке.Use sp_execute_external_script to execute scripts written in a supported language. Единственным поддерживаемым языком является R в SQL Server 2016 R Services.The only supported language is R in SQL Server 2016 R Services.

Используйте sp_execute_external_script для выполнения скриптов, написанных на поддерживаемом языке.Use sp_execute_external_script to execute scripts written in a supported language. Поддерживаемые языки — Python и R в Azure SQL управляемый экземпляр службы машинного обучения.Supported languages are Python and R in Azure SQL Managed Instance Machine Learning Services.

По умолчанию результирующие наборы, возвращаемые этой хранимой процедурой, выводятся с неименованными столбцами.By default, result sets returned by this stored procedure are output with unnamed columns. Имена столбцов, используемые в скрипте, являются локальными для среды сценариев и не отражаются в выходном результирующем наборе.Column names used within a script are local to the scripting environment and are not reflected in the outputted result set. Чтобы присвоить имя столбцам результирующего набора, используйте WITH RESULT SET предложение EXECUTE .To name result set columns, use the WITH RESULT SET clause of EXECUTE.

В дополнение к возврату результирующего набора можно возвращать скалярные значения, используя выходные параметры.In addition to returning a result set, you can return scalar values to using OUTPUT parameters.

Вы можете управлять ресурсами, используемыми внешними скриптами, настроив внешний пул ресурсов.You can control the resources used by external scripts by configuring an external resource pool. Дополнительные сведения см. в статье Создание внешнего пула ресурсов ()Transact-SQL .For more information, see CREATE EXTERNAL RESOURCE POOL (Transact-SQL). Сведения о рабочей нагрузке можно получить из представлений каталога регулятора ресурсов, представления динамического административного представления и счетчиков.Information about the workload can be obtained from the resource governor catalog views, DMV's, and counters. Дополнительные сведения см. в статьях Resource Governor представления каталога ()Transact-SQL , Resource Governor связанные динамические административные представления (transact-sql)и SQL Server, External Scripts Object.For more information, see Resource Governor Catalog Views (Transact-SQL), Resource Governor Related Dynamic Management Views (Transact-SQL), and SQL Server, External Scripts Object.

Мониторинг выполнения скриптаMonitor script execution

Отслеживайте выполнение скрипта с помощью sys.dm_external_script_requests и sys.dm_external_script_execution_stats.Monitor script execution using sys.dm_external_script_requests and sys.dm_external_script_execution_stats.

Параметры моделирования секцийParameters for partition modeling

Можно задать два дополнительных параметра, которые позволяют моделировать секционированные данные, где секции основаны на одном или нескольких столбцах, которые позволяют естественно сегментировать набор данных в логические секции, созданные и используемые только во время выполнения скрипта.You can set two additional parameters that enable modeling on partitioned data, where partitions are based on one or more columns you provide that naturally segment a data set into logical partitions created and used only during script execution. Столбцы, содержащие повторяющиеся значения для Age, Gender, географического региона, даты или времени, представляют собой несколько примеров, которые применяются к секционированным наборам данных.Columns containing repeating values for age, gender, geographic region, date or time, are a few examples that lend themselves to partitioned data sets.

Эти два параметра являются input_data_1_partition_by_columns и input_data_1_order_by_columns, где второй параметр используется для упорядочивания результирующего набора.The two parameters are input_data_1_partition_by_columns and input_data_1_order_by_columns, where the second parameter is used to order the result set. Параметры передаются в качестве входных данных во sp_execute_external_script внешний скрипт, который выполняется один раз для каждой секции.The parameters are passed as inputs to sp_execute_external_script with the external script executing once for every partition. Дополнительные сведения и примеры см. в разделе учебник. Создание моделей на основе секций.For more information and examples, see Tutorial: Create partition-based models.

Скрипт можно выполнить параллельно, указав @parallel=1 .You can execute script in parallel by specifying @parallel=1. Если входной запрос можно выполнить параллельно, следует задать в @parallel=1 качестве части аргументов значение sp_execute_external_script .If the input query can be parallelized, you should set @parallel=1 as part of your arguments to sp_execute_external_script. По умолчанию оптимизатор запросов работает в @parallel=1 таблицах, имеющих более 256 строк, но если вы хотите, чтобы эта возможность была бы обработана явно, этот скрипт включает параметр в качестве демонстрации.By default, the query optimizer operates under @parallel=1 on tables having more than 256 rows, but if you want to handle this explicitly, this script includes the parameter as a demonstration.

Совет

Для рабочих нагрузок обучения можно использовать @parallel с любым произвольным скриптом обучения, даже при использовании алгоритмов, отличных от Microsoft RX.For training workoads, you can use @parallel with any arbitrary training script, even those using non-Microsoft-rx algorithms. Как правило, в SQL Server параллелизм в скриптах обучения предусмотрен только в алгоритмах RevoScaleR (с префиксом RX).Typically, only RevoScaleR algorithms (with the rx prefix) offer parallelism in training scenarios in SQL Server. Но с новыми параметрами в SQL Server 2019 и более поздних версиях можно параллелизации скрипта, который вызывает функции, не разработанные специально для этой возможности.But with the new parameters in SQL Server 2019 and later, you can parallelize a script that calls functions not specifically engineered with that capability.

Потоковое выполнение для скриптов Python и RStreaming execution for Python and R scripts

Потоковая передача позволяет скрипту Python или R работать с большим объемом данных, чем может уместиться в памяти.Streaming allows the Python or R script to work with more data than can fit in memory. Для управления числом строк, передаваемых во время потоковой передачи, укажите целочисленное значение параметра @r_rowsPerRead в @params коллекции.To control the number of rows passed during streaming, specify an integer value for the parameter, @r_rowsPerRead in the @params collection. Например, при обучении модели, использующей очень широкие данные, можно изменить значение для чтения меньшего количества строк, чтобы все строки можно было отправить в один блок данных.For example, if you are training a model that uses very wide data, you could adjust the value to read fewer rows, to ensure that all rows can be sent in one chunk of data. Этот параметр также можно использовать для управления числом строк, считываемых и обрабатываемых одновременно, чтобы снизить производительность сервера.You might also use this parameter to manage the number of rows being read and processed at one time, to mitigate server performance issues.

Как @r_rowsPerRead параметр для потоковой передачи, так и @parallel аргумент должны рассматриваться как подсказки.Both the @r_rowsPerRead parameter for streaming and the @parallel argument should be considered hints. Чтобы подсказка была применена, необходимо создать план SQL-запроса, включающий параллельную обработку.For the hint to be applied, it must be possible to generate a SQL query plan that includes parallel processing. Если это невозможно, параллельная обработка не может быть включена.If this is not possible, parallel processing cannot be enabled.

Примечание

Потоковая передача и параллельная обработка поддерживаются только в выпуске Enterprise Edition.Streaming and parallel processing are supported only in Enterprise Edition. Вы можете включить параметры в запросы в выпуске Standard без возникновения ошибки, но параметры не будут действовать, а скрипты R выполняются в одном процессе.You can include the parameters in your queries in Standard Edition without raising an error, but the parameters have no effect and R scripts run in a single process.

ОграниченияRestrictions

Типы данныхData types

Следующие типы данных не поддерживаются при использовании входного запроса или параметров sp_execute_external_script процедуры и возвращают ошибку неподдерживаемого типа.The following data types are not supported when used in the input query or parameters of sp_execute_external_script procedure, and return an unsupported type error.

В качестве обходного CAST решения Transact-SQLTransact-SQL перед отправкой в внешний скрипт необходимо привести столбец или значение к поддерживаемому типу.As a workaround, CAST the column or value to a supported type in Transact-SQLTransact-SQL before sending it to the external script.

  • курсорcursor

  • timestamptimestamp

  • datetime2, DateTimeOffset, времяdatetime2, datetimeoffset, time

  • sql_variantsql_variant

  • текст, изображениеtext, image

  • xmlxml

  • hierarchyid, геометрия, Географияhierarchyid, geometry, geography

  • Определяемые пользователем типы CLRCLR user-defined types

В общем случае любой результирующий набор, который не может быть сопоставлен с Transact-SQLTransact-SQL типом данных, выводится как null.In general, any result set that cannot be mapped to a Transact-SQLTransact-SQL data type, is output as NULL.

Ограничения, относящиеся к RRestrictions specific to R

Если входные данные содержат значения типа DateTime , которые не соответствуют допустимому диапазону значений в R, то значения преобразуются в НД.If the input includes datetime values that do not fit the permissible range of values in R, values are converted to NA. Это необходимо, поскольку машинное обучение SQL допускает больший диапазон значений, чем поддерживается в языке R.This is required because SQL machine learning permits a larger range of values than is supported in the R language.

Значения float (например,, +Inf , -Inf NaN ) не поддерживаются в машинном обучении SQL, хотя оба языка используют стандарт IEEE 754.Float values (for example, +Inf, -Inf, NaN) are not supported in SQL machine learning even though both languages use IEEE 754. Текущее поведение просто отправляет значения непосредственно в SQL; в результате клиент SQL выдает ошибку.Current behavior just sends the values to SQL directly; as a result, the SQL client throws an error. Поэтому эти значения преобразуются в значение NULL.Therefore, these values are converted to NULL.

РазрешенияPermissions

Необходимо разрешение на выполнение любых внешних скриптов для базы данных.Requires EXECUTE ANY EXTERNAL SCRIPT database permission.

ПримерыExamples

В этом разделе содержатся примеры того, как эта хранимая процедура может использоваться для выполнения скриптов R или Python с помощью Transact-SQLTransact-SQL .This section contains examples of how this stored procedure can be used to execute R or Python scripts using Transact-SQLTransact-SQL.

A.A. Возврат набора данных R в SQL ServerReturn an R data set to SQL Server

В следующем примере создается хранимая процедура, которая использует sp_execute_external_script для возврата набора данных IRI, входящего в состав R.The following example creates a stored procedure that uses sp_execute_external_script to return the Iris dataset included with R.

DROP PROC IF EXISTS get_iris_dataset;  
go  
CREATE PROC get_iris_dataset
AS  
BEGIN  
 EXEC   sp_execute_external_script  
       @language = N'R'  
     , @script = N'iris_data <- iris;'
     , @input_data_1 = N''  
     , @output_data_1_name = N'iris_data'
     WITH RESULT SETS (("Sepal.Length" float not null,
           "Sepal.Width" float not null,  
        "Petal.Length" float not null,
        "Petal.Width" float not null, "Species" varchar(100)));  
END;
GO

Б.B. Создание модели Python и формирование оценок на ее основеCreate a Python model and generate scores from it

В этом примере показано, как использовать sp_execute_external_script для создания оценок в простой модели Python.This example illustrates how to use sp_execute_external_script to generate scores on a simple Python model.

CREATE PROCEDURE [dbo].[py_generate_customer_scores]
AS
BEGIN

-- Input query to generate the customer data
DECLARE @input_query NVARCHAR(MAX) = N'SELECT customer, orders, items, cost FROM dbo.Sales.Orders'

EXEC sp_execute_external_script @language = N'Python', @script = N'
import pandas as pd
from sklearn.cluster import KMeans

# Get data from input query
customer_data = my_input_data

# Define the model
n_clusters = 4
est = KMeans(n_clusters=n_clusters, random_state=111).fit(customer_data[["orders","items","cost"]])
clusters = est.labels_
customer_data["cluster"] = clusters

OutputDataSet = customer_data
'
, @input_data_1 = @input_query
, @input_data_1_name = N'my_input_data'
WITH RESULT SETS (("CustomerID" int, "Orders" float,"Items" float,"Cost" float,"ClusterResult" float));
END;
GO

Заголовки столбцов, используемые в коде Python, не выводятся в SQL Server; Поэтому для указания имен столбцов и типов данных, используемых SQL, используйте инструкцию WITH RESULT.Column headings used in Python code are not output to SQL Server; therefore, use the WITH RESULT statement to specify the column names and data types for SQL to use.

В.C. Создание модели R на основе данных из SQL ServerGenerate an R model based on data from SQL Server

В следующем примере создается хранимая процедура, которая использует sp_execute_external_script для создания модели IRI и возврата модели.The following example creates a stored procedure that uses sp_execute_external_script to generate an iris model and return the model.

Примечание

В этом примере требуется дополнительная установка пакета e1071.This example requires advance installation of the e1071 package. Дополнительные сведения см. в статье Установка дополнительных пакетов R на SQL Server.For more information, see Install additional R packages on SQL Server.

DROP PROC IF EXISTS generate_iris_model;
GO
CREATE PROC generate_iris_model
AS
BEGIN
 EXEC sp_execute_external_script  
      @language = N'R'  
     , @script = N'  
          library(e1071);  
          irismodel <-naiveBayes(iris_data[,1:4], iris_data[,5]);  
          trained_model <- data.frame(payload = as.raw(serialize(irismodel, connection=NULL)));  
'  
     , @input_data_1 = N'select "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species" from iris_data'  
     , @input_data_1_name = N'iris_data'  
     , @output_data_1_name = N'trained_model'  
    WITH RESULT SETS ((model varbinary(max)));  
END;
GO

Чтобы создать аналогичную модель с помощью Python, необходимо изменить идентификатор языка с @language=N'R' на @language = N'Python' и внести необходимые изменения в аргумент @script.To generate a similar model using Python, you would change the language identifier from @language=N'R' to @language = N'Python', and make necessary modifications to the @script argument. В противном случае все параметры будут работать так же, как в R.Otherwise, all parameters function the same way as for R.

Для оценки можно также применять собственную функцию PREDICT, которая обычно выполняется быстрее, так как не вызывает среду выполнения Python или R.For scoring, you can also use the native PREDICT function, which is typically faster because it avoids calling the Python or R runtime.

См. такжеSee also