Dela via


PREDICT (Transact-SQL)

Gäller för: SQL Server 2017 (14.x) och senare versioner Azure SQL Managed InstanceAzure Synapse Analytics

Genererar ett förutsagt värde eller poäng baserat på en lagrad modell. Mer information finns i Intern bedömning med hjälp av funktionen PREDICT T-SQL.

Välj en produkt

På följande rad väljer du det produktnamn som du är intresserad av och endast den produktinformationen visas.

Anmärkning

PREDICT är inte tillgängligt i Azure SQL Database.

* SQL Server *  

* SQL Managed Instance *  

* Azure Synapse
Analys *
 

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

Arguments

MODELL

Parametern MODEL används för att ange den modell som används för bedömning eller förutsägelse. Modellen anges som en variabel eller en literal eller ett skalärt uttryck.

PREDICT stöder modeller som tränats med RevoScaleR - och revoscalepy-paketen .

Parametern MODEL används för att ange den modell som används för bedömning eller förutsägelse. Modellen anges som en variabel eller en literal eller ett skalärt uttryck.

I Azure SQL Managed Instance PREDICT har stöd för modeller som tränats med RevoScaleR och revoscalepy-paket .

Parametern MODEL används för att ange den modell som används för bedömning eller förutsägelse. Modellen anges som en variabel eller en literal eller ett skalärt uttryck eller en skalär underfråga.

I Azure Synapse Analytics PREDICT stöder modeller i ONNX-format (Open Neural Network Exchange). Mer information finns i ONNX.

DATA

Dataparametern används för att ange de data som används för bedömning eller förutsägelse. Data anges i form av en tabellkälla i frågan. Tabellkällan kan vara en tabell, ett tabellalias, ett CTE-alias, en vy eller en tabellvärdesfunktion.

RUNTIME = ONNX

Anger maskininlärningsmotorn som används för modellkörning. Parametervärdet RUNTIME är alltid ONNX. Parametern RUNTIME krävs för Azure Synapse Analytics. Argumentet RUNTIME = ONNX är endast tillgängligt i Azure Synapse Analytics.

MED ( <result_set_definition> )

WITH-satsen används för att ange schemat för utdata som returneras av PREDICT funktionen.

Förutom de kolumner som returneras av PREDICT själva funktionen är alla kolumner som ingår i dataindata tillgängliga för användning i frågan.

Returnera värden

Inget fördefinierat schema är tillgängligt. Innehållet i modellen verifieras inte och de returnerade kolumnvärdena verifieras inte heller.

  • Funktionen PREDICT skickar kolumner som indata.
  • Funktionen PREDICT genererar också nya kolumner, men antalet kolumner och deras datatyper beror på vilken typ av modell som användes för förutsägelse.

Eventuella felmeddelanden som rör data, modellen eller kolumnformatet returneras av den underliggande förutsägelsefunktionen som är associerad med modellen.

Anmärkningar

Funktionen PREDICT stöds i alla utgåvor av SQL Server 2017 eller senare i Windows och Linux. Machine Learning Services behöver inte vara aktiverat för att använda PREDICT.

Algoritmer som stöds

Den modell som du använder måste ha skapats med någon av de algoritmer som stöds från RevoScaleR - eller revoscalepy-paketen . En lista över modeller som stöds finns i Intern bedömning med hjälp av funktionen PREDICT T-SQL.

Algoritmer som kan konverteras till ONNX-modellformat stöds.

Algoritmer som kan konverteras till ONNX-modellformat och modeller som du har skapat med någon av de algoritmer som stöds från RevoScaleR - eller revoscalepy-paket stöds. En lista över algoritmer som stöds för närvarande i RevoScaleR och revoscalepy finns i Intern bedömning med hjälp av funktionen PREDICT T-SQL.

Permissions

Inga behörigheter krävs för PREDICT. Användaren behöver EXECUTE dock behörighet för databasen och behörighet att köra frågor mot data som används som indata. Användaren måste också kunna läsa modellen från en tabell, om modellen har lagrats i en tabell.

Examples

I följande exempel visas syntaxen för att anropa PREDICT.

Använda PREDICT i en FROM-sats

Det här exemplet refererar till PREDICT funktionen i -instruktionen FROM i en SELECT -instruktion:

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;

Aliaset d som anges för tabellkällan i parametern DATA används för att referera till kolumnerna som tillhör dbo.mytable. Aliaset p som angetts för funktionen används för PREDICT att referera till kolumnerna som returneras av PREDICT funktionen.

  • Modellen lagras som kolumnen varbinary(max) i tabellen med namnet Models. Ytterligare information som ID och description sparas i tabellen för att identifiera modellen.
  • Aliaset d som anges för tabellkällan i parametern DATA används för att referera till kolumnerna som tillhör dbo.mytable. Kolumnnamnen för indata ska matcha namnet på indata för modellen.
  • Aliaset p som angetts för funktionen används för PREDICT att referera till den förutsagda kolumn som returneras av PREDICT funktionen. Kolumnnamnet ska ha samma namn som utdatanamnet för modellen.
  • Alla indatakolumner och de förutsagda kolumnerna är tillgängliga för visning i -instruktionen SELECT .

Föregående exempelfråga kan skrivas om för att skapa en vy genom att MODEL ange som en skalär underfråga:

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;

Kombinera PREDICT med en INSERT-instruktion

Ett vanligt användningsfall för förutsägelse är att generera en poäng för indata och sedan infoga de förutsagda värdena i en tabell. I följande exempel förutsätts att det anropande programmet använder en lagrad procedur för att infoga en rad som innehåller det förutsagda värdet i en tabell:

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;
  • Resultatet av PREDICT lagras i en tabell med namnet PredictionResults.
  • Modellen lagras som kolumnen varbinary(max) i tabellen med namnet Models. Ytterligare information, till exempel ID och beskrivning, kan sparas i tabellen för att identifiera modellen.
  • Det alias d som anges för tabellkällan i parametern DATA används för att referera till kolumnerna i dbo.mytable. Kolumnnamnen för indata ska matcha namnet på indata för modellen.
  • Det alias p som anges för funktionen används för PREDICT att referera till den förutsagda kolumn som returneras av PREDICT funktionen. Kolumnnamnet ska ha samma namn som utdatanamnet för modellen.
  • Alla indatakolumner och den förutsagda kolumnen är tillgängliga för visning i -instruktionen SELECT .

Läs mer om relaterade begrepp i följande artiklar: