PREDICT (Transact-SQL)

Область применения:yesSQL Server 2017 (14.x) и более поздних версий YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics

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

Важно!

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

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

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

* Управляемый экземпляр 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.

Важно!

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

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

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

Данные

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

RUNTIME = ONNX

Важно!

Аргумент RUNTIME = ONNX доступен только в Azure SQL для пограничных вычислений, 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. Дополнительные сведения, такие как идентификатор и описание, сохраняются в этой таблице для идентификации модели.
  • Псевдоним 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.

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

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