Partilhar via


PREVER (Transact-SQL)

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores Azure SQL Managed InstanceAzure Synapse Analytics

Gera um valor previsto ou pontuações com base em um modelo armazenado. Para obter mais informações, consulte Pontuação nativa usando a função PREDICT T-SQL.

Selecione um produto

Na linha seguinte, selecione o nome do produto em que está interessado e apenas as informações desse produto são apresentadas.

Observação

PREDICT não está disponível na Azure SQL Database.

Importante

A PREDICT sintaxe varia consoante o produto. Use o seletor de produtos para ver a sintaxe correta para a sua plataforma. Em particular, o Azure Synapse Analytics requer o RUNTIME = ONNX argumento, que não é usado no SQL Server nem no Azure SQL Managed Instance.

* Servidor SQL *  

* Instância gerenciada SQL *  

* Sinapse do Azure
Análise *
 

Sintaxe

PREDICT  
(  
  MODEL = @model | model_literal,  
  DATA = object AS <table_alias>
)  
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

MODELO

Use o MODEL parâmetro para especificar o modelo de pontuação ou previsão. Especifique o modelo como uma variável, uma expressão literal ou escalar.

PREDICT suporta modelos treinados usando os pacotes RevoScaleR e revoscalepy .

Use o MODEL parâmetro para especificar o modelo de pontuação ou previsão. Especifique o modelo como uma variável, uma expressão literal ou escalar.

Na Instância Gerenciada SQL do Azure, PREDICT dá suporte a modelos treinados usando os pacotes RevoScaleR e revoscalepy .

Use o MODEL parâmetro para especificar o modelo de pontuação ou previsão. Especifique o modelo como uma variável, um literal, uma expressão escalar ou uma subconsulta escalar.

No Azure Synapse Analytics, PREDICT dá suporte a modelos no formato ONNX (Open Neural Network Exchange ). Para obter mais informações, consulte ONNX.

DADOS

O parâmetro DATA especifica os dados para pontuação ou previsão. Especifique os dados sob a forma de uma fonte de tabela na consulta. A fonte da tabela pode ser uma tabela, alias de tabela, alias CTE, vista ou função com valores de tabela.

TEMPO de EXECUÇÃO = ONNX

Indica o mecanismo de aprendizado de máquina usado para a execução do modelo. O valor do RUNTIME parâmetro é sempre ONNX. O RUNTIME parâmetro é necessário para o Azure Synapse Analytics. O RUNTIME = ONNX argumento só está disponível no Azure Synapse Analytics.

COM ( <result_set_definition> )

Use a cláusula WITH para especificar o esquema da saída devolvida pela PREDICT função.

Além das colunas retornadas pela PREDICT própria função, todas as colunas que fazem parte da entrada de dados estão disponíveis para uso na consulta.

Valores de retorno

Não existe nenhum esquema pré-definido disponível; O conteúdo do modelo não é validado e os valores das colunas devolvidos também não são validados.

  • A PREDICT função passa por colunas como entrada.
  • A PREDICT função também gera novas colunas, mas o número de colunas e os seus tipos de dados depende do tipo de modelo utilizado para a previsão.

Quaisquer 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.

Observações

A PREDICT função é suportada em todas as edições do SQL Server 2017 ou posterior, no Windows e Linux. Os Serviços de Aprendizagem Automática não precisam de estar ativados para usar PREDICT.

Algoritmos suportados

O modelo que você usa deve ter sido criado usando um dos algoritmos suportados dos pacotes RevoScaleR ou revoscalepy . Para obter uma lista de modelos atualmente suportados, consulte Pontuação nativa usando a função PREDICT T-SQL.

Algoritmos que podem ser convertidos para o formato de modelo ONNX são suportados.

Algoritmos que podem ser convertidos para o formato de modelo ONNX e modelos que você criou usando um dos algoritmos suportados dos pacotes RevoScaleR ou revoscalepy são suportados. Para obter uma lista dos algoritmos atualmente suportados no RevoScaleR e no revoscalepy, consulte Pontuação nativa usando a função PREDICT T-SQL.

Permissions

Não são necessárias permissões para PREDICTisso, no entanto, o usuário precisa EXECUTE de permissão no banco de dados e permissão para consultar quaisquer dados que sejam usados como entradas. O usuário também deve ser capaz de ler o modelo de uma tabela, se o modelo tiver sido armazenado em uma tabela.

Examples

Os exemplos a seguir demonstram a sintaxe para chamar PREDICT.

Usando PREDICT em uma cláusula FROM

Este exemplo faz referência à PREDICTFROM função na cláusula de uma SELECT instrução:

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 fonte da tabela no DATA parâmetro refere-se às colunas pertencentes a dbo.mytable. O alias p especificado para a PREDICT função faz referência às colunas devolvidas pela PREDICT função.

  • O modelo é armazenado como coluna varbinary(max) na tabela chamada Models. Informações adicionais, como ID e description são salvas na tabela para identificar o modelo.
  • O alias d especificado para a fonte da tabela no DATA parâmetro refere-se às colunas pertencentes a dbo.mytable. Os nomes das colunas de dados de entrada devem corresponder ao nome das entradas para o modelo.
  • O alias p especificado para a PREDICT função faz referência à coluna prevista devolvida pela PREDICT função. O nome da coluna deve ter o mesmo nome que o nome de saída do modelo.
  • Todas as colunas de dados de entrada e as colunas previstas estão disponíveis para exibição na SELECT instrução.

A consulta de exemplo anterior pode ser reescrita para criar um modo de 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 previsão é gerar uma pontuação para dados de entrada e, em seguida, inserir os valores previstos em uma tabela. O exemplo a seguir pressupõe que o aplicativo de chamada usa um procedimento armazenado para inserir uma linha contendo 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 coluna varbinary(max) na tabela chamada Models. Informações adicionais, como ID e descrição, podem ser salvas na tabela para identificar o modelo.
  • O alias d especificado para a fonte da tabela no DATA parâmetro faz referência às colunas em dbo.mytable. Os nomes das colunas de dados de entrada devem corresponder ao nome das entradas para o modelo.
  • O alias p especificado para a PREDICT função refere-se à coluna prevista devolvida pela PREDICT função. O nome da coluna deve ter o mesmo nome que o nome de saída do modelo.
  • Todas as colunas de entrada e a coluna prevista estão disponíveis para exibição na SELECT instrução.

Saiba mais sobre conceitos relacionados nos seguintes artigos: