Поделиться через


PREDICT (Transact-SQL)

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

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

Выбор продукта

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

Замечание

PREDICT недоступно в Базе данных SQL Azure.

* SQL Server *  

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

* Azure Synapse
Аналитика*
 

Синтаксис

PREDICT  
(  
  MODEL = @model | model_literal,  
  DATA = object AS <table_alias>
)  
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 обученные с помощью пакетов RevoScaleR и revoscalepy .

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

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

Данные

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

RUNTIME = ONNX

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

WITH ( <result_set_definition> )

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

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

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

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

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

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

Замечания

Функция 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 .

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