Freigeben über


PROGNOSE (Transact-SQL)

Gilt für: SQL Server 2017 (14.x) und höhere Versionen von Azure SQL Managed InstanceAzure 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.

Hinweis

PREDICT ist in der Azure SQL-Datenbank nicht verfügbar.

Von Bedeutung

Die PREDICT Syntax variiert je nach Produkt. Verwenden Sie die Produktauswahl, um die richtige Syntax für Ihre Plattform anzuzeigen. Insbesondere erfordert Azure Synapse Analytics das RUNTIME = ONNX Argument, das in SQL Server oder azure SQL Managed Instance nicht verwendet wird.

* SQL Server *  

* SQL Managed Instance *  

* Azure Synapse
Analytik*
 

Syntax

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

Argumente

MODEL

Verwenden Sie den MODEL Parameter, um das Modell für die Bewertung oder Vorhersage anzugeben. Geben Sie das Modell als Variable, ein Literal oder einen skalaren Ausdruck an.

PREDICT unterstützt Modelle, die mit den Paketen RevoScaleR und revoscalepy trainiert wurden.

Verwenden Sie den MODEL Parameter, um das Modell für die Bewertung oder Vorhersage anzugeben. Geben Sie das Modell als Variable, ein Literal oder einen skalaren Ausdruck an.

In der von Azure SQL verwalteten Instanz werden Modelle unterstützt, PREDICT die mit den Paketen "RevoScaleR " und "revoscalepy " trainiert wurden.

Verwenden Sie den MODEL Parameter, um das Modell für die Bewertung oder Vorhersage anzugeben. Geben Sie das Modell als Variable, ein Literal, einen skalaren Ausdruck oder eine skalare Unterabfrage an.

In Azure Synapse Analytics unterstützt PREDICT Modelle im ONNX-Format (Open Neural Network Exchange). Weitere Informationen finden Sie unter ONNX.

DATEN

Der DATA-Parameter gibt die Daten für die Bewertung oder Vorhersage an. Geben Sie Daten in Form einer Tabellenquelle in der Abfrage an. Die Tabellenquelle kann eine Tabellen-, Tabellenalias-, CTE-Alias-, Ansichts- oder Tabellenwertfunktion sein.

RUNTIME = ONNX

Dieses Argument gibt die für die Modellausführung verwendete Machine-Learning-Engine an. Der Wert für den Parameter RUNTIME ist immer ONNX. Der RUNTIME Parameter ist für Azure Synapse Analytics erforderlich. Das RUNTIME = ONNX Argument ist nur in Azure Synapse Analytics verfügbar.

WITH ( <result_set_definition> )

Verwenden Sie die WITH-Klausel, um das Schema der von der PREDICT Funktion zurückgegebenen Ausgabe anzugeben.

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 ist kein vordefiniertes Schema verfügbar; Der Inhalt des Modells wird nicht überprüft, und die zurückgegebenen Spaltenwerte werden auch nicht überprüft.

  • Die PREDICT-Funktion durchläuft die Spalten als Eingabe.
  • Die PREDICT Funktion generiert auch neue Spalten, aber die Anzahl der Spalten und deren Datentypen hängt vom Typ des Modells ab, das für die Vorhersage verwendet wird.

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 für die Verwendung PREDICTaktiviert sein.

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 für die Tabellenquelle in dem DATA Parameter angegebene Alias d verweist auf die Spalten, die dbo.mytablegehören. Der für die PREDICT Funktion angegebene Alias p verweist auf die von der PREDICT Funktion zurückgegebenen Spalten.

  • Das Modell wird als varbinary(max)- Spalte in der Tabelle gespeichert, die aufgerufen wird Models. Weitere Informationen, z. B. ID und description, werden zur Identifikation des Modells in der Tabelle gespeichert.
  • Der für die Tabellenquelle in dem DATA Parameter angegebene Alias d verweist auf die Spalten, die dbo.mytablegehören. Die Namen der Eingabedatenspalten sollten mit den Namen der Eingaben für das Modell übereinstimmen.
  • Der für die PREDICT Funktion angegebene Alias p verweist auf die vorhergesagte Spalte, 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 stehen zur Anzeige in der SELECT Anweisung zur Verfügung.

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 der Tabelle gespeichert, die aufgerufen wird Models. Weitere Informationen, z. B. die ID und eine Beschreibung, können zur Identifikation des Modells in der Tabelle gespeichert werden.
  • Der für die DATA Tabellenquelle im Parameter angegebene Alias d verweist auf die Spalten in dbo.mytable. Die Namen der Eingabedatenspalten sollten mit den Namen der Eingaben für das Modell übereinstimmen.
  • Der für die PREDICT Funktion angegebene Alias p verweist auf die vorhergesagte Spalte, 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 vorhergesagte Spalte sind für die Anzeige in der SELECT Anweisung verfügbar.

Weitere Informationen zu verwandten Konzepten finden Sie in den folgenden Artikeln: