PREDICT (Transact-SQL)
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores
de Azure SQL Database
Azure SQL Instancia administrada
Azure Synapse Analytics
Genera un valor de predicción o puntuaciones basadas en un modelo almacenado. Para obtener más información, vea Puntuación nativa mediante la función PREDICT de T-SQL.
Selección de un producto
En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.
* SQL Server *
* SQL Database *
* SQL Managed Instance *
* Azure Synapse
Analytics *
Sintaxis
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 )
}
Argumentos
MODEL
El parámetro MODEL
se usa para especificar el modelo que se usa para la puntuación o predicción. El modelo se especifica como una variable o un literal, o bien una expresión escalar.
PREDICT
admite modelos entrenados mediante los paquetes RevoScaleR y revoscalepy.
El parámetro MODEL
se usa para especificar el modelo que se usa para la puntuación o predicción. El modelo se especifica como una variable o un literal, o bien una expresión escalar.
En Azure SQL Managed Instance, PREDICT
admite modelos en formato Open Neural Network Exchange (ONNX) o entrenados con los paquetes RevoScaleR y revoscalepy.
Importante
La compatibilidad con ONNX en PREDICT
está en versión preliminar en Azure SQL Managed Instance.
El parámetro MODEL
se usa para especificar el modelo que se usa para la puntuación o predicción. El modelo se especifica como una variable o un literal, o bien una expresión escalar o una subconsulta escalar.
En Azure Synapse Analytics, PREDICT
admite modelos en formato Open Neural Network Exchange (ONNX).
DATOS
El parámetro DATA se usa para especificar los datos que se usan para la puntuación o predicción. Los datos se especifican en forma de un origen de tabla en la consulta. El origen de tabla puede ser una tabla, un alias de tabla, alias de CTE, vista o función con valores de tabla.
RUNTIME = ONNX
Importante
El argumento RUNTIME = ONNX
solo está disponible en Azure SQL Edge y Azure Synapse Analytics, y está en versión preliminar en Azure SQL Managed Instance.
Indica el motor de aprendizaje automático que se usa para la ejecución del modelo. El valor del parámetro RUNTIME
siempre es ONNX
. El parámetro es necesario para Azure SQL Edge y Azure Synapse Analytics. En Azure SQL Managed Instance (en versión preliminar), el parámetro es opcional y solo se usa cuando se utilizan modelos ONNX.
WITH ( <definición_de_conjunto_de_resultados> )
La cláusula WITH se usa para especificar el esquema de la salida devuelta por la función PREDICT
.
Además de las columnas devueltas por la propia función PREDICT
, todas las columnas que forman parte de los datos de entrada están disponibles para su uso en la consulta.
Valores devueltos
No hay ningún esquema predefinido disponible; el contenido del modelo no se valida ni tampoco los valores de columna devueltos.
- La función
PREDICT
se pasa a través de las columnas como entrada. - La función
PREDICT
también genera columnas nuevas, pero el número de columnas y sus tipos de datos dependen del tipo de modelo que se usó para la predicción.
Los mensajes de error relacionados con los datos, el modelo o el formato de columna se devuelven mediante la función de predicción subyacente asociada con el modelo.
Observaciones
La función PREDICT
se admite en todas las ediciones de SQL Server 2017 o posteriores, en Windows y Linux. No es necesario habilitar Machine Learning Services para usar PREDICT
.
Algoritmos admitidos
El modelo que se use se debe haber creado mediante uno de los algoritmos admitidos de los paquetes RevoScaleR o revoscalepy. Para obtener una lista de los modelos admitidos actualmente, vea Puntuación nativa mediante la función PREDICT de T-SQL.
Se admiten los algoritmos que se pueden convertir al formato de modelo ONNX.
Se admiten los algoritmos que se pueden convertir al formato de modelo ONNX y a los modelos que se hayan creado mediante uno de los algoritmos admitidos de los paquetes RevoScaleR o revoscalepy. Para obtener una lista de los modelos admitidos actualmente en RevoScaleR y revoscalepy, vea Puntuación nativa mediante la función PREDICT de T-SQL.
Permisos
No se requieren permisos para PREDICT
; pero los usuarios necesitan el permiso EXECUTE
en la base de datos y permiso para consultar los datos que se usan como entradas. Los usuarios también deben poder leer el modelo desde una tabla, si el modelo se ha almacenado en una tabla.
Ejemplos
En los ejemplos siguientes se describe la sintaxis para llamar a PREDICT
.
Uso de PREDICT en una cláusula FROM
Este ejemplo se hace referencia a la función PREDICT
en la cláusula FROM
de una instrucción 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;
El alias d especificado para el origen de tabla en el parámetro DATA
se usa para hacer referencia a las columnas que pertenecen a dbo.mytable
. El alias p especificado para la función PREDICT
se usa para hacer referencia a las columnas devueltas por la función PREDICT
.
- El modelo se almacena como la columna
varbinary(max)
en la tablaModels
. En la tabla se guarda información adicional como elID
y ladescription
para identificar el modelo. - El alias d especificado para el origen de tabla en el parámetro
DATA
se usa para hacer referencia a las columnas que pertenecen adbo.mytable
. Los nombres de las columnas de datos de entrada deben coincidir con el nombre de las entradas del modelo. - El alias p especificado para la función
PREDICT
se usa para hacer referencia a la columna predicha devuelta por la funciónPREDICT
. El nombre de la columna debe ser el mismo que el nombre de salida del modelo. - Todas las columnas de datos de entrada y las columnas de predicción están disponibles para mostrarse en la instrucción SELECT.
La consulta de ejemplo anterior se puede volver a escribir para crear una vista; para ello, hay que especificar MODEL
como una subconsulta escalar:
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;
Combinación de PREDICT con una instrucción INSERT
Un caso de uso común para la predicción consiste en generar una puntuación para los datos de entrada y después insertar los valores de predicción en una tabla. En el ejemplo siguiente se da por supuesto que la aplicación que realiza la llamada usa un procedimiento almacenado para insertar una fila que contiene el valor de predicción en una tabla:
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;
- Los resultados de
PREDICT
se almacenan en una tabla denominadaPredictionResults
. - El modelo se almacena como la columna
varbinary(max)
en la tablaModels
. En la tabla se puede guardar información adicional como el id. y la descripción para identificar el modelo. - El alias d especificado para el origen de tabla en el parámetro
DATA
se usa para hacer referencia a las columnas dedbo.mytable
. Los nombres de las columnas de datos de entrada deben coincidir con el nombre de las entradas del modelo. - El alias p especificado para la función
PREDICT
se usa para hacer referencia a la columna predicha devuelta por la funciónPREDICT
. El nombre de la columna debe ser el mismo que el nombre de salida del modelo. - Todas las columnas de entrada y la columna de predicción están disponibles para mostrarse en la instrucción SELECT.
Pasos siguientes
Obtenga más información sobre los conceptos relacionados en los artículos siguientes: