PREDICT (Transact-SQL)

Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz 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 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 namens Models gespeichert. Weitere Informationen, z. B. ID und description, 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 zu dbo.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 der PREDICT-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 namens PredictionResults gespeichert.
  • Das Modell wird als varbinary(max)-Spalte in einer Tabelle namens Models 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 in dbo.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 der PREDICT-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: