PREDICT (Transact-SQL)
Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics
Generiert einen vorhergesagten Wert oder Bewertungen auf Grundlage eines gespeicherten Modells. Weitere Informationen finden Sie unter Native Bewertung mithilfe der PREDICT T-SQL-Funktion.
Auswählen eines Produkts
Wählen Sie in der folgenden Zeile den Namen des Produkts aus, an dem Sie interessiert sind. Dann werden nur Informationen zu diesem Produkt angezeigt.
* SQL Server *
* SQL-Datenbank *
* SQL Managed Instance *
* Azure Synapse
Analytics *
Syntax
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 )
}
Argumente
MODEL
Der Parameter MODEL
wird verwendet, um das Modell anzugeben, das für die Bewertung oder Vorhersage verwendet wird. Das Modell wird als Variable, Literal oder Skalarausdruck angegeben.
PREDICT
unterstützt Modelle, die mit den Paketen RevoScaleR und revoscalepy trainiert wurden.
Der Parameter MODEL
wird verwendet, um das Modell anzugeben, das für die Bewertung oder Vorhersage verwendet wird. Das Modell wird als Variable, Literal oder Skalarausdruck angegeben.
In Azure SQL Managed Instance unterstützt PREDICT
Modelle im ONNX-Format (Open Neural Network Exchange) oder Modelle, die mit den Paketen RevoScaleR und revoscalepy trainiert wurden.
Wichtig
Die Unterstützung für ONNX in PREDICT
befindet sich in Azure SQL Managed Instance in der Vorschauphase.
Der Parameter MODEL
wird verwendet, um das Modell anzugeben, das für die Bewertung oder Vorhersage verwendet wird. Das Modell wird als Variable, Literal, Skalarausdruck oder skalare Unterabfrage angegeben.
In Azure Synapse Analytics unterstützt PREDICT
Modelle im ONNX-Format (Open Neural Network Exchange).
DATEN
Der DATA-Parameter wird verwendet, um die Daten anzugeben, die für die Bewertung oder Vorhersage verwendet werden. Daten werden in Form einer Tabellenquelle in der Abfrage angegeben. Die Tabellenquelle kann eine Tabelle, ein Tabellenalias, CTE-Alias, eine sicht oder Tabellenwertfunktion sein.
RUNTIME = ONNX
Wichtig
Das Argument RUNTIME = ONNX
ist nur in Azure SQL Edge, Azure Synapse Analytics und in der Vorschauphase in Azure SQL Managed Instance verfügbar.
Dieses Argument gibt die für die Modellausführung verwendete Machine-Learning-Engine an. Der Wert für den Parameter RUNTIME
ist immer ONNX
. Dieser Parameter ist für Azure SQL Edge und Azure Synapse Analytics erforderlich. In Azure SQL Managed Instance (Vorschau) ist er optional und wird nur bei Verwendung von ONNX-Modellen eingesetzt.
WITH ( <result_set_definition> )
Die WITH-Klausel wird verwendet, um das Schema der Ausgabe anzugeben, die von der PREDICT
-Funktion zurückgegeben wird.
Zusätzlich zu den Spalten, die von der PREDICT
-Funktion selbst zurückgegeben werden, stehen alle Spalten, die Teil der Dateneingabe sind, während der Abfrage zur Verfügung.
Rückgabewerte
Es steht kein vordefiniertes Schema zur Verfügung. Die Inhalte des Modells und die zurückgegebenen Spaltenwerte werden nicht überprüft.
- Die
PREDICT
-Funktion durchläuft die Spalten als Eingabe. - Die
PREDICT
-Funktion generiert auch neue Spalten, allerdings hängen die Anzahl der Spalten und deren Datentypen vom Typ des Modells ab, das für die Vorhersage verwendet wurde.
Fehlermeldungen im Zusammenhang mit den Daten, dem Modell oder dem Spaltenformat werden von der zugrunde liegenden Vorhersagefunktion zurückgegeben, die dem Modell zugeordnet ist.
Bemerkungen
Die PREDICT
-Funktion wird in allen Editionen von SQL Server 2017 oder höher unter Windows und Linux unterstützt. Machine Learning Services muss nicht aktiviert werden, um PREDICT
zu verwenden.
Unterstützte Algorithmen
Das von Ihnen verwendete Modell muss mithilfe eines der unterstützten Algorithmen aus dem RevoScaleR- oder dem revoscalepy-Paket erstellt worden sein. Eine Liste der derzeit unterstützten Modelle finden Sie unter Native Bewertung mithilfe der T-SQL-Funktion PREDICT mit SQL Machine Learning.
Algorithmen, die in das Modellformat ONNX konvertiert werden können, werden unterstützt.
Algorithmen, die in das Modellformat ONNX konvertiert werden können, und Modelle, die Sie mithilfe eines der unterstützten Algorithmen aus dem RevoScaleR- oder dem revoscalepy-Paket erstellt haben, werden unterstützt. Eine Liste der derzeit unterstützten Algorithmen in RevoScaleR und revoscalepy finden Sie unter Native Bewertung mithilfe der T-SQL-Funktion PREDICT mit SQL Machine Learning.
Berechtigungen
Es sind zwar keine Berechtigungen für PREDICT
erforderlich, jedoch benötigt der Benutzer EXECUTE
-Berechtigungen für die Datenbank und Berechtigungen zum Abfragen von Daten, die als Eingaben verwendet werden. Der Benutzer muss außerdem das Modell aus einer Tabelle heraus lesen können, wenn das Modell in einer Tabelle gespeichert wurde.
Beispiele
Die folgenden Beispiele veranschaulichen die Syntax zum Aufrufen von PREDICT
.
Verwenden von PREDICT in einer FROM-Klausel
In diesem Beispiel wird auf die PREDICT
-Funktion in der FROM
-Klausel einer SELECT
-Anweisung verwiesen:
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;
Der Alias d, der für die Tabellenquelle im Parameter DATA
angegeben ist, wird verwendet, um auf die Spalten zu verweisen, die zu dbo.mytable
gehören. Der Alias p, der für die PREDICT
-Funktion angegeben ist, wird verwendet, um auf die Spalten zu verweisen, die von der PREDICT
-Funktion zurückgegeben werden.
- Das Modell wird als
varbinary(max)
-Spalte in einer Tabelle namensModels
gespeichert. Weitere Informationen, z. B.ID
unddescription
, werden zur Identifikation des Modells in der Tabelle gespeichert. - Der Alias d, der für die Tabellenquelle im Parameter
DATA
angegeben ist, wird verwendet, um auf die Spalten zu verweisen, die zudbo.mytable
gehören. Die Namen der Eingabedatenspalten sollten mit den Namen der Eingaben für das Modell übereinstimmen. - Der Alias p, der für die
PREDICT
-Funktion angegeben ist, wird verwendet, um auf die vorhergesagte Spalte zu verweisen, die von derPREDICT
-Funktion zurückgegeben wird. Der Spaltenname sollte mit dem Namen der Ausgabe für das Modell übereinstimmen. - Alle Eingabedatenspalten und die vorhergesagten Spalten können über die SELECT-Anweisung angezeigt werden.
Die vorherige Beispielabfrage kann umgeschrieben werden, um eine Sicht zu erstellen, indem MODEL
als skalare Unterabfrage angegeben wird:
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;
Kombinieren von PREDICT mit einer INSERT-Anweisung
Einer der gängigsten Anwendungsfälle für die Vorhersage ist das Generieren einer Bewertung für Eingabedaten und das anschließende Einfügen der vorhergesagten Werte in eine Tabelle. Im folgenden Beispiel wird davon ausgegangen, dass die aufrufende Anwendung eine gespeicherte Prozedur verwendet, um eine Zeile mit dem vorhergesagten Wert in eine Tabelle einzufügen:
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;
- Die Ergebnisse von
PREDICT
werden in einer Tabelle namensPredictionResults
gespeichert. - Das Modell wird als
varbinary(max)
-Spalte in einer Tabelle namensModels
gespeichert. Weitere Informationen, z. B. die ID und eine Beschreibung, können zur Identifikation des Modells in der Tabelle gespeichert werden. - Der Alias d, der für die Tabellenquelle im Parameter
DATA
angegeben ist, wird verwendet, um auf die Spalten indbo.mytable
zu verweisen. Die Namen der Eingabedatenspalten sollten mit den Namen der Eingaben für das Modell übereinstimmen. - Der Alias p, der für die
PREDICT
-Funktion angegeben ist, wird verwendet, um auf die vorhergesagte Spalte zu verweisen, die von derPREDICT
-Funktion zurückgegeben wird. Der Spaltenname sollte mit dem Namen der Ausgabe für das Modell übereinstimmen. - Alle Eingabespalten und die vorhergesagten Spalte können über die SELECT-Anweisung angezeigt werden.
Nächste Schritte
Weitere Informationen zu verwandten Konzepten finden Sie in den folgenden Artikeln: