PREDICT (Transact-SQL)

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure 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.

* Instância Gerenciada de SQL *  

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 chamada Models. Informações adicionais, como ID e description, 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 a dbo.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ção PREDICT. 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 chamada PredictionResults.
  • O modelo é armazenado como uma coluna varbinary(max) na tabela chamada Models. 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 em dbo.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ção PREDICT. 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: