PREDICT (Transact-SQL)

Si applica a: SQL Server 2017 (14.x) e versioni successive Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics

Genera un valore o punteggi stimati in base a un modello archiviato. Per altre informazioni, vedere Assegnazione di punteggi nativi tramite la funzione T-SQL PREDICT.

Selezionare un prodotto

Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.

* Istanza gestita di SQL *  

* Azure Synapse
Analytics *
 

Sintassi

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 )
  }

Argomenti

MODEL

Il parametro MODEL viene usato per specificare il modello usato per l'assegnazione dei punteggi o la stima. Il modello viene specificato come variabile, valore letterale o espressione scalare.

PREDICT supporta i modelli sottoposti a training usando i pacchetti RevoScaleR e revoscalepy.

Il parametro MODEL viene usato per specificare il modello usato per l'assegnazione dei punteggi o la stima. Il modello viene specificato come variabile, valore letterale o espressione scalare.

In Istanza gestita di SQL di Azure, PREDICT supporta modelli in formato Open Neural Network Exchange (ONNX) o modelli sottoposti a training con i pacchetti RevoScaleR e revoscalepy.

Importante

Il supporto per ONNX in PREDICT è disponibile in anteprima in Istanza gestita di SQL di Azure.

Il parametro MODEL viene usato per specificare il modello usato per l'assegnazione dei punteggi o la stima. Il modello viene specificato come variabile, valore letterale, espressione scalare o una sottoquery scalare.

In Azure Synapse Analytics, PREDICT supporta i modelli in formato Open Neural Network Exchange (ONNX).

DATI

Il parametro DATA viene usato per specificare i dati usati per l'assegnazione dei punteggi o la stima. I dati vengono specificati nella query sotto forma di un'origine di tabella. L'origine di tabella può essere una tabella, un alias di tabella, un alias di espressione di tabella comune, una vista o una funzione con valori di tabella.

RUNTIME = ONNX

Importante

L'argomento RUNTIME = ONNX è disponibile solo in Azure SQL Edge, Azure Synapse Analytics ed è disponibile in anteprima in Istanza gestita di SQL di Azure.

Indica il motore di Machine Learning usato per l'esecuzione del modello. Il valore del parametro RUNTIME è sempre ONNX. In Azure SQL Edge e Azure Synapse Analytics il parametro è obbligatorio, mentre in Istanza gestita di SQL di Azure (in anteprima) è facoltativo e viene inserito solo quando si usano i modelli ONNX.

WITH ( <result_set_definition> )

La clausola WITH viene usata per specificare lo schema dell'output restituito dalla funzione PREDICT.

Oltre alle colonne restituiti dalla funzione PREDICT stessa, tutte le colonne che fanno parte dell'input di dati sono disponibili per l'uso nella query.

Valori restituiti

Non è disponibile uno schema predefinito. Non vengono convalidati né il contenuto del modello né i valori di colonna restituiti.

  • La funzione PREDICT interessa le colonne come input.
  • La funzione PREDICT, poi, genera nuove colonne. Il numero delle colonne e i tipi di dati corrispondenti dipendono dal tipo di modello usato per la stima.

Eventuali messaggi di errore correlati ai dati, al modello o al formato delle colonne vengono restituiti dalla funzione di stima sottostante associata al modello.

Osservazioni

La funzione PREDICT è supportata da tutte le edizioni di SQL Server 2017 o versione successiva in Windows e in Linux. Non è necessario abilitare Machine Learning Services per usare PREDICT.

Algoritmi supportati

Il modello da usare deve essere stato creato con uno degli algoritmi supportati del pacchetto RevoScaleR o revoscalepy. Per un elenco dei modelli attualmente supportati, vedere Assegnazione dei punteggi nativa tramite la funzione T-SQL PREDICT.

Sono supportati gli algoritmi che possono essere convertiti nel formato dei modelli ONNX.

Sono supportati gli algoritmi che possono essere convertiti nel formato dei modelli ONNX e dei modelli creati usando uno degli algoritmi supportati dai pacchetti RevoScaleR e revoscalepy. Per un elenco degli algoritmi attualmente supportati in RevoScaleR e revoscalepy, vedere Assegnazione di punteggi nativa tramite la funzione PREDICT T-SQL.

Autorizzazioni

Per PREDICT non sono necessarie autorizzazioni specifiche. L'utente, tuttavia, ha bisogno dell'autorizzazione EXECUTE per il database e dell'autorizzazione per eseguire query su tutti i dati usati come input. Se il modello è stato archiviato in una tabella, l'utente deve anche essere in grado di leggerlo dalla tabella.

Esempi

Gli esempi seguenti illustrano la sintassi per chiamare la funzione PREDICT.

Uso di PREDICT in una clausola FROM

Questo esempio fa riferimento alla funzione PREDICT nella clausola FROM di un'istruzione 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 specificato per l'origine di tabella nel parametro DATA viene usato per fare riferimento alle colonne appartenenti a dbo.mytable. L'alias p specificato per la funzione PREDICT viene usato per fare riferimento alle colonne restituite dalla funzione PREDICT.

  • Il modello viene archiviato come varbinary(max) colonna nella tabella denominata Models. Altre informazioni, ID ad esempio e, description vengono salvate nella tabella per identificare il modello.
  • L'alias d specificato per l'origine di tabella nel parametro DATA viene usato per fare riferimento alle colonne appartenenti a dbo.mytable. I nomi delle colonne di dati di input devono corrispondere ai nomi degli input relativi al modello.
  • L'alias p specificato per la funzione PREDICT viene usato per fare riferimento alla colonna stimata restituita dalla funzione PREDICT. Il nome della colonna deve corrispondere al nome di output del modello.
  • Tutte le colonne di dati di input e le colonne stimate sono disponibili per la visualizzazione nell'istruzione SELECT.

La query di esempio precedente può essere riscritta per creare una vista specificando MODEL come sottoquery scalare:

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;

Combinazione di PREDICT con un'istruzione INSERT

Un caso d'uso comune per la stima consiste nella generazione di un punteggio per i dati di input e quindi nell'inserimento dei valori stimati in una tabella. L'esempio seguente presuppone che l'applicazione chiamante usi una stored procedure per inserire una riga contenente il valore stimato in una tabella:

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;
  • I risultati di PREDICT vengono archiviati in una tabella denominata PredictionResults.
  • Il modello viene archiviato come varbinary(max) colonna nella tabella denominata Models. Nella tabella è possibile salvare informazioni aggiuntive come l'ID e la descrizione per identificare il modello.
  • L'alias d specificato per l'origine di tabella nel parametro DATA viene usato per fare riferimento alle colonne appartenenti a dbo.mytable. I nomi delle colonne di dati di input devono corrispondere ai nomi degli input relativi al modello.
  • L'alias p specificato per la funzione PREDICT viene usato per fare riferimento alla colonna stimata restituita dalla funzione PREDICT. Il nome della colonna deve corrispondere al nome di output del modello.
  • Tutte le colonne di input e la colonna stimata sono disponibili per la visualizzazione nell'istruzione SELECT.

Passaggi successivi

Altre informazioni sui concetti correlati sono disponibili negli articoli seguenti: