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.
* SQL Server *
* SQL Database *
* SQL Managed Instance *
* 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éeModels
. Des informations supplémentaires telles queID
etdescription
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 fonctionPREDICT
. 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éePredictionResults
. - Le modèle est stocké en tant que colonne
varbinary(max)
dans la table appeléeModels
. 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 dansdbo.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 fonctionPREDICT
. 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 :