PREDICT (Transact-SQL)

S’applique à : SQL Server 2017 (14.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Génère une valeur prédite ou des scores calculés à partir d’un modèle stocké. Pour plus d’informations, consultez Notation native à l’aide de la fonction T-SQL PREDICT.

Sélectionner un produit

Sur la ligne suivante, sélectionnez le nom du produit qui vous intéresse afin d’afficher uniquement les informations qui le concernent.

* Azure Synapse
Analytics *
 

Syntaxe

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 )
  }

Arguments

MODEL

Le paramètre MODEL permet de spécifier le modèle utilisé pour calculer les scores ou effectuer une prédiction. Le modèle est spécifié sous forme de variable, de littéral ou d’expression scalaire.

PREDICT prend en charge les modèles formés à l’aide des packages RevoScaleR et revoscalepy.

Le paramètre MODEL permet de spécifier le modèle utilisé pour calculer les scores ou effectuer une prédiction. Le modèle est spécifié sous forme de variable, de littéral ou d’expression scalaire.

Dans Azure SQL Managed Instance, PREDICT prend en charge les modèles au format ONNX (Open Neural Network Exchange) ou des modèles formés à l’aide des packages RevoScaleR et revoscalepy.

Important

La prise en charge d’ONNX dans PREDICT est disponible en préversion dans Azure SQL Managed Instance.

Le paramètre MODEL permet de spécifier le modèle utilisé pour calculer les scores ou effectuer une prédiction. Le modèle est spécifié sous forme de variable, de littéral, d’expression scalaire ou de sous-requête scalaire.

Dans Azure Synapse Analytics, PREDICT prend en charge les modèles au format ONNX (Open Neuronal Network Exchange).

DONNÉES

Le paramètre DATA permet de spécifier les données utilisées pour calculer les scores ou effectuer une prédiction. Les données sont spécifiées sous la forme d’une source de table dans la requête. La source de table peut être une table, un alias de table, un alias d’expression de table commune (CTE), une vue ou une fonction table.

RUNTIME = ONNX

Important

L’argument RUNTIME = ONNX est disponible uniquement dans Azure SQL Edge, Azure Synapse Analytics et est en préversion dans Azure SQL Managed Instance.

Indique le moteur d’apprentissage automatique utilisé pour l’exécution du modèle. La valeur du paramètre RUNTIME est toujours ONNX. Le paramètre est obligatoire pour Azure SQL Edge et Azure Synapse Analytics. Dans Azure SQL Managed Instance (en préversion), le paramètre est facultatif et utilisé uniquement lors de l’utilisation de modèles ONNX.

WITH ( <result_set_definition> )

La clause WITH permet de spécifier le schéma de la sortie retournée par la fonction PREDICT.

En plus des colonnes retournées par la fonction PREDICT proprement dite, toutes les colonnes qui font partie des données d’entrée peuvent être utilisées dans la requête.

Valeurs retournées

Aucun schéma prédéfini n’est disponible. Le contenu du modèle n’est pas validé et les valeurs de colonne retournées ne sont pas non plus validées.

  • La fonction PREDICT passe par les colonnes en tant qu’entrée.
  • La fonction PREDICT génère également de nouvelles colonnes, dont le nombre et le type de données dépendent du type de modèle qui a été utilisé pour la prédiction.

Les messages d’erreur liés aux données, au modèle ou au format de colonne sont retournés par la fonction de prédiction sous-jacente qui est associée au modèle.

Notes

La fonction PREDICT est prise en charge dans toutes les éditions de SQL Server 2017 et des versions ultérieures, sur Windows et Linux. Machine Learning Services n’a pas besoin d’être activé pour utiliser PREDICT.

Algorithmes pris en charge

Le modèle que vous utilisez doit avoir été créé à l’aide de l’un des algorithmes pris en charge fournis dans les packages RevoScaleR ou revoscalepy. Pour obtenir la liste des modèles actuellement pris en charge, consultez Scoring natif à l’aide de la fonction T-SQL PREDICT.

Les algorithmes qui peuvent être convertis au format du modèle ONNX sont pris en charge.

Les algorithmes qui peuvent être convertis au format de modèle ONNX et les modèles que vous avez créés à l’aide d’un des algorithmes pris en charge fournis dans les packages RevoScaleR ou revoscalepy sont pris en charge. Pour obtenir la liste des algorithmes actuellement pris en charge dans RevoScaleR et revoscalepy, consultez Scoring natif à l’aide de la fonction T-SQL PREDICT.

Autorisations

Aucune autorisation n’est requise pour PREDICT. Cependant, l’utilisateur doit avoir l’autorisation EXECUTE sur la base de données, ainsi que l’autorisation d’effectuer des requêtes sur les données utilisées comme entrées. L’utilisateur doit également pouvoir lire le modèle à partir d’une table, si le modèle a été stocké dans une table.

Exemples

Les exemples suivants illustrent la syntaxe à utiliser pour appeler PREDICT.

Utilisation de PREDICT dans une clause FROM

Cet exemple référence la fonction PREDICT dans la clause FROM d’une instruction 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;

L’alias d spécifié pour la source de table dans le paramètre DATA est utilisé pour référencer les colonnes appartenant à dbo.mytable. L’alias p spécifié pour la fonction PREDICT est utilisé pour référencer les colonnes retournées par la fonction PREDICT.

  • Le modèle est stocké en tant que colonne varbinary(max) dans la table appelée Models. Des informations supplémentaires telles que ID et description sont enregistrées dans la table pour identifier le modèle.
  • L’alias d spécifié pour la source de table dans le paramètre DATA est utilisé pour référencer les colonnes appartenant à dbo.mytable. Les noms des colonnes de données d’entrée doivent correspondre au nom des entrées du modèle.
  • L’alias p spécifié pour la fonction PREDICT est utilisé pour référencer la colonne prédite retournée par la fonction PREDICT. Le nom de colonne doit avoir le même nom que le nom de sortie du modèle.
  • Toutes les colonnes de données d’entrée et les colonnes prédites peuvent être affichées dans l’instruction SELECT.

L’exemple de requête précédent peut être réécrit pour créer une vue en spécifiant MODEL en tant que sous-requête scalaire :

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;

Combinaison de PREDICT avec une instruction INSERT

Un cas d’usage courant pour la prédiction consiste à calculer un score pour les données d’entrée, puis à insérer les valeurs prédites dans une table. L’exemple suivant suppose que l’application appelante utilise une procédure stockée pour insérer une ligne contenant la valeur prédite dans une table :

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;
  • Les résultats de PREDICT sont stockés dans une table appelée PredictionResults.
  • Le modèle est stocké en tant que colonne varbinary(max) dans la table appelée Models. Des informations supplémentaires telles que l’ID et la description sont enregistrées dans la table pour identifier le modèle.
  • L’alias d spécifié pour la source de table dans le paramètre DATA est utilisé pour référencer les colonnes dans dbo.mytable. Les noms des colonnes de données d’entrée doivent correspondre au nom des entrées du modèle.
  • L’alias p spécifié pour la fonction PREDICT est utilisé pour référencer la colonne prédite retournée par la fonction PREDICT. Le nom de colonne doit avoir le même nom que le nom de sortie du modèle.
  • Toutes les colonnes d’entrée et les colonnes prédites peuvent être affichées dans l’instruction SELECT.

Étapes suivantes

En savoir plus sur les concepts associés dans les articles suivants :