PREDICT (Transact-SQL)
Si applica a: SQL Server 2017 (14.x) e versioni successive
database SQL di Azure Istanza gestita di SQL di Azure
Azure 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.
* SQL Server *
* Database SQL *
* 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 SQL Edge di Azure, 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 denominataModels
. Altre informazioni,ID
ad esempio edescription
, 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 adbo.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 funzionePREDICT
. 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 denominataPredictionResults
. - Il modello viene archiviato come
varbinary(max)
colonna nella tabella denominataModels
. 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 adbo.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 funzionePREDICT
. 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: