PREDICT (Transact-SQL)

Применимо к: SQL Server 2017 (14.x) и более поздних версий Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics

Создает предсказанное значение или оценки на основе хранимой модели. Дополнительные сведения см.в разделе Native scoring using the PREDICT T-SQL function (Собственная оценка с использованием функции PREDICT T-SQL).

Выберите продукт

В следующей строке выберите название нужного продукта, и отобразится информация только об этом продукте.

* Управляемый экземпляр SQL *  

Синтаксис

PREDICT  
(  
  MODEL = @model | model_literal,  
  DATA = object AS <table_alias>
  [, RUNTIME = ONNX ]
)  
WITH ( <result_set_definition> )  

<result_set_definition> ::=  
  {  
    { column_name  
      data_type  
      [ COLLATE collation_name ]  
      [ NULL | NOT NULL ]  
    }  
      [,...n ]  
  }  

MODEL = @model | model_literal  
PREDICT  
(  
  MODEL = <model_object>,
  DATA = object AS <table_alias>
  [, RUNTIME = ONNX ]
)  
WITH ( <result_set_definition> )  

<result_set_definition> ::=  
  {  
    { column_name  
      data_type  
      [ COLLATE collation_name ]  
      [ NULL | NOT NULL ]  
    }  
      [,...n ]  
  }  

<model_object> ::=
  {
    model_literal
    | model_variable
    | ( scalar_subquery )
  }

Аргументы

MODEL

Параметр MODEL используется для указания модели, используемой для оценки и прогнозирования. Модель указывается как переменная или литерал или скалярное выражение.

Функция PREDICT поддерживает модели, обученные с помощью пакетов RevoScaleR и revoscalepy.

Параметр MODEL используется для указания модели, используемой для оценки и прогнозирования. Модель указывается как переменная или литерал или скалярное выражение.

В Управляемом экземпляре SQL Azure PREDICT поддерживает модели в формате Open Neural Network Exchange (ONNX) или модели, обученные с помощью пакетов RevoScaleR и revoscalepy.

Важно!

Поддержка ONNX в доступна PREDICT в предварительной версии в Управляемый экземпляр SQL Azure.

Параметр MODEL используется для указания модели, используемой для оценки и прогнозирования. Модель указывается как переменная, литерал, скалярное выражение или скалярный вложенный запрос.

В Azure Synapse Analytics PREDICT поддерживает модели в формате Open Neural Network Exchange (ONNX).

Данные

Параметр DATA используется для указания данных, используемых для оценки и прогнозирования. Данные указываются в виде источника таблицы в запросе. Источник таблицы может быть таблицей, псевдонимом таблицы, псевдонимом обобщенного табличного выражения, представлением или функцией с табличным значением.

RUNTIME = ONNX

Важно!

Аргумент RUNTIME = ONNX доступен только в Azure SQL Edge, Azure Synapse Analytics и доступен в предварительной версии в Управляемый экземпляр SQL Azure.

Указывает подсистему машинного обучения, используемую для выполнения модели. Параметр RUNTIME всегда имеет значение ONNX. В SQL Azure для пограничных вычислений и Azure Synapse Analytics этот параметр является обязательным. В Управляемом экземпляре SQL Azure этот параметр является необязательным и требуется только при использовании моделей ONNX.

WITH ( <result_set_definition> )

Предложение WITH используется для указания схемы выходных данных, возвращаемых функцией PREDICT.

Помимо столбцов, возвращаемых самой функцией PREDICT, в запросе можно использовать все столбцы, которые являются частью входных данных.

Возвращаемые значения

Предопределенные схемы недоступны. Содержимое модели не проверяется, возвращаемые значения столбцов тоже не проверяются.

  • Функция PREDICT проходит через столбцы в качестве входных данных.
  • Функция PREDICT также создает новые столбцы, но число столбцов и типы данных зависят от типа модели, использованной для прогнозирования.

Сообщения об ошибках, связанные с данными, моделью или форматом столбца, выводятся функцией прогнозирования, связанной с моделью.

Remarks

Функция PREDICT поддерживается во всех выпусках SQL Server 2017 и более поздних версий на Windows и Linux. Для использования функции PREDICT не требуется включать Службы машинного обучения.

Поддерживаемые алгоритмы

Используемая модель должна быть создана с помощью одного из поддерживаемых алгоритмов из пакета RevoScaleR или revoscalepy. Список поддерживаемых в настоящее время моделей см. в разделе Собственная оценка с помощью функции T-SQL PREDICT.

Поддерживаются алгоритмы, которые можно преобразовать в формат модели ONNX.

Поддерживаются алгоритмы, которые можно преобразовать в формат модели ONNX, а также модели, созданные с использованием одного из поддерживаемых алгоритмов из пакетов RevoScaleR или revoscalepy. Список поддерживаемых в настоящее время алгоритмов в пакетах RevoScaleR и revoscalepy см. в разделе Собственная оценка с помощью функции T-SQL PREDICT.

Разрешения

Для PREDICT разрешения не требуются, но пользователю нужно разрешение EXECUTE на базу данных и разрешение на запрос любых данных, используемых в качестве входных. У пользователя должна быть возможность чтения модели из таблицы, если модель хранится в таблице.

Примеры

В следующих примерах демонстрируется синтаксис вызова PREDICT.

Использование PREDICT в предложении FROM

Этот пример ссылается на функцию PREDICT в предложении FROM инструкции SELECT:

SELECT d.*, p.Score
FROM PREDICT(MODEL = @model,
    DATA = dbo.mytable AS d) WITH (Score FLOAT) AS p;
DECLARE @model VARBINARY(max) = (SELECT test_model FROM scoring_model WHERE model_id = 1);

SELECT d.*, p.Score
FROM PREDICT(MODEL = @model,
    DATA = dbo.mytable AS d, RUNTIME = ONNX) WITH (Score FLOAT) AS p;

Псевдоним d, указанный для табличного источника в параметре DATA, используется для ссылки на столбцы, принадлежащие таблице dbo.mytable. Псевдоним p, указанный для функции PREDICT, используется для ссылки на столбцы, возвращаемые функцией PREDICT.

  • Модель хранится в виде varbinary(max) столбца в таблице с именем Models. Дополнительные сведения, такие как ID и description , сохраняются в таблице для идентификации модели.
  • Псевдоним d, указанный для табличного источника в параметре DATA, используется для ссылки на столбцы, принадлежащие таблице dbo.mytable. Имена столбцов входных данных должны соответствовать именам входных данных для модели.
  • Псевдоним p, указанный для функции PREDICT, используется для ссылки на прогнозируемый столбец, возвращаемый функцией PREDICT. Имя столбца должно совпадать с именем выходных данных для модели.
  • Все столбцы входных данных и прогнозируемые столбцы доступны для вывода в инструкции SELECT.

Предыдущий пример запроса можно переписать для создания представления, указав MODEL в качестве скалярного вложенного запроса:

CREATE VIEW predictions
AS
SELECT d.*, p.Score
FROM PREDICT(MODEL = (SELECT test_model FROM scoring_model WHERE model_id = 1),
             DATA = dbo.mytable AS d, RUNTIME = ONNX) WITH (Score FLOAT) AS p;

Использование предложения PREDICT с инструкцией INSERT

Прогнозирование часто используется для формирования оценки входных данных и последующей вставки прогнозируемых значений в таблицу. В следующем примере предполагается, что вызывающее приложение использует хранимую процедуру, чтобы вставить в таблицу строку, содержащую прогнозируемое значение:

DECLARE @model VARBINARY(max) = (SELECT model FROM scoring_model WHERE model_name = 'ScoringModelV1');

INSERT INTO loan_applications (c1, c2, c3, c4, score)
SELECT d.c1, d.c2, d.c3, d.c4, p.score
FROM PREDICT(MODEL = @model, DATA = dbo.mytable AS d) WITH(score FLOAT) AS p;
DECLARE @model VARBINARY(max) = (SELECT model FROM scoring_model WHERE model_name = 'ScoringModelV1');

INSERT INTO loan_applications (c1, c2, c3, c4, score)
SELECT d.c1, d.c2, d.c3, d.c4, p.score
FROM PREDICT(MODEL = @model, DATA = dbo.mytable AS d, RUNTIME = ONNX) WITH(score FLOAT) AS p;
  • Результаты PREDICT хранятся в таблице с именем PredictionResults.
  • Модель хранится в виде varbinary(max) столбца в таблице с именем Models. Дополнительные сведения, такие как идентификатор и описание, сохраняются в этой таблице для идентификации модели.
  • Псевдоним d, указанный для источника таблицы в параметре DATA, используется для ссылки на столбцы в таблице dbo.mytable. Имена столбцов входных данных должны соответствовать именам входных данных для модели.
  • Псевдоним p, указанный для функции PREDICT, используется для ссылки на прогнозируемый столбец, возвращаемый функцией PREDICT. Имя столбца должно совпадать с именем выходных данных для модели.
  • Все входные и прогнозируемые столбцы доступны для вывода в инструкции SELECT.

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

Дополнительные сведения о связанных понятиях см. в следующих статьях: