PREDICT (Transact-SQL)
Aplica-se a: SQL Server 2017 (14.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics
Gera um valor previsto ou pontuações com base em um modelo armazenado. Para obter mais informações, confira Pontuação nativa usando a função PREDICT T-SQL.
Selecionar um produto
Na linha a seguir, selecione o nome do produto em que você tem interesse e somente as informações do produto serão exibidas.
* SQL Server *
* Banco de Dados SQL *
* Instância Gerenciada de SQL *
* Azure Synapse
Analytics *
Sintaxe
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
MODELO
O parâmetro MODEL
é usado para especificar o modelo usado para previsão ou pontuação. O modelo é especificado como uma variável, uma literal ou uma expressão escalar.
PREDICT
é compatível com modelos treinados usando os pacotes RevoScaleR e revoscalepy.
O parâmetro MODEL
é usado para especificar o modelo usado para previsão ou pontuação. O modelo é especificado como uma variável, uma literal ou uma expressão escalar.
Na Instância Gerenciada de SQL do Azure, PREDICT
é compatível com modelos no formato ONNX (Open Neural Network Exchange) ou modelos treinados usando os pacotes RevoScaleR e revoscalepy.
Importante
O suporte para ONNX em PREDICT
está em versão prévia na Instância Gerenciada de SQL do Azure.
O parâmetro MODEL
é usado para especificar o modelo usado para previsão ou pontuação. O modelo é especificado como uma variável, como uma expressão literal ou escalar ou como uma subconsulta escalar.
No Azure Synapse Analytics, PREDICT
é compatível com modelos no formato ONNX (Open Neural Network Exchange).
DADOS
O parâmetro DATA é usado para especificar os dados usados para previsão ou pontuação. Os dados são especificados na forma de uma origem de tabela na consulta. A origem de tabela pode ser uma tabela, um alias de tabela, um alias de CTE (Expressão de Tabela Comum), uma exibição ou uma função com valor de tabela.
RUNTIME = ONNX
Importante
O argumento RUNTIME = ONNX
só está disponível no SQL do Azure no Edge, no Azure Synapse Analytics e na Instância Gerenciada de SQL do Azure.
Indica o mecanismo de machine learning usado para a execução do modelo. O valor do parâmetro RUNTIME
sempre será ONNX
. O parâmetro é obrigatório para o SQL do Azure no Edge e o Azure Synapse Analytics. Na Instância Gerenciada de SQL do Azure (em versão prévia), o parâmetro é opcional e usado somente com modelos ONNX.
WITH ( <result_set_definition> )
A cláusula WITH é usada para especificar o esquema da saída retornada pela função PREDICT
.
Além das colunas retornadas pela própria função PREDICT
, todas as colunas que fazem parte dos dados de entrada estão disponíveis para serem usadas na consulta.
Valores retornados
Nenhum esquema predefinido está disponível. O conteúdo do modelo e os valores de coluna retornados não são validados.
- A função
PREDICT
passa pelas colunas como entrada. - A função
PREDICT
também gera novas colunas, mas o número de colunas e seus tipos de dados dependem do tipo de modelo que foi usado para previsão.
As mensagens de erro relacionadas aos dados, ao modelo ou ao formato de coluna são retornadas pela função de previsão subjacente associada ao modelo.
Comentários
A função PREDICT
tem suporte em todas as edições do SQL Server 2017 ou posterior, no Windows e no Linux. Os Serviços de Machine Learning não precisam ser habilitados para usar o PREDICT
.
Algoritmos compatíveis
O modelo usado deverá ter sido criado com um dos algoritmos compatíveis com os pacotes RevoScaleR ou revoscalepy. Para obter uma lista de modelos atualmente compatíveis, confira Pontuação nativa usando a função PREDICT T-SQL.
Os algoritmos que podem ser convertidos em um formato de modelo ONNX são compatíveis.
Os algoritmos que podem ser convertidos em um formato de modelo ONNX e os modelos criados usando um dos algoritmos dos pacotes RevoScaleR ou revoscalepy são compatíveis. Para obter uma lista de algoritmos atualmente compatíveis com RevoScaleR e revoscalepy, confira Pontuação nativa usando a função PREDICT T-SQL.
Permissões
Não é necessária nenhuma permissão para PREDICT
, no entanto, o usuário precisa da permissão EXECUTE
no banco de dados e da permissão para consultar os dados que serão usados como entradas. O usuário também precisará ler o modelo em uma tabela se o modelo estiver armazenado em uma tabela.
Exemplos
Os exemplos a seguir demonstram a sintaxe para chamar PREDICT
.
Uso PREDICT em uma cláusula FROM
Este exemplo referencia a função PREDICT
na cláusula FROM
de uma instrução 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;
O alias d especificado para a origem da tabela no parâmetro DATA
é usado para referenciar as colunas que pertencem a dbo.mytable
. O alias p especificado para a função PREDICT
é usado para referenciar as colunas retornadas pela função PREDICT
.
- O modelo é armazenado como uma coluna
varbinary(max)
na tabela chamadaModels
. Informações adicionais, comoID
edescription
, serão salvas na tabela para identificar o modelo. - O alias d especificado para a origem da tabela no parâmetro
DATA
é usado para referenciar as colunas que pertencem adbo.mytable
. Os nomes da coluna de dados de entrada devem corresponder aos nomes das entradas para o modelo. - O alias p especificado para a função
PREDICT
é usado para referenciar a coluna prevista retornada pela funçãoPREDICT
. O nome da coluna deve ser igual ao nome de saída para o modelo. - Todas as colunas de dados de entrada, bem como as colunas previstas estão disponíveis para exibição na instrução SELECT.
A consulta de exemplo anterior pode ser escrita novamente de maneira a criar uma exibição especificando MODEL
como uma 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;
Combinando PREDICT com uma instrução INSERT
Um caso de uso comum para a previsão é gerar uma pontuação para dados de entrada e inserir os valores previstos em uma tabela. O seguinte exemplo presume que o aplicativo de chamada usa um procedimento armazenado para inserir uma linha que contém o valor previsto em uma tabela:
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;
- Os resultados de
PREDICT
são armazenados em uma tabela chamadaPredictionResults
. - O modelo é armazenado como uma coluna
varbinary(max)
na tabela chamadaModels
. Informações adicionais, como ID e descrição, poderão ser salvas na tabela para identificar o modelo. - O alias d especificado para a origem da tabela no parâmetro
DATA
é usado para referenciar as colunas emdbo.mytable
. Os nomes da coluna de dados de entrada devem corresponder aos nomes das entradas para o modelo. - O alias p especificado para a função
PREDICT
é usado para referenciar a coluna prevista retornada pela funçãoPREDICT
. O nome da coluna deve ser igual ao nome de saída para o modelo. - Todas as colunas de entrada, bem como a coluna prevista estão disponíveis para exibição na instrução SELECT.
Próximas etapas
Saiba mais sobre conceitos relacionados nos seguintes artigos: