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.

* 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

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 der von Azure SQL verwalteten Instanz werden Modelle unterstützt, PREDICT 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, Skalarausdruck oder skalare Unterabfrage angegeben.

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

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

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 der Tabelle gespeichert, die aufgerufen wird Models. 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 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 wird verwendet, um auf die Spalten in dbo.mytablezu verweisen. Die Namen der Eingabedatenspalten sollten mit den Namen der Eingaben für das Modell übereinstimmen.
  • Der für die PREDICT Funktion angegebene Alias p 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 vorhergesagte Spalte sind für die Anzeige in der SELECT Anweisung verfügbar.

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