Sdílet prostřednictvím


PREDICT (Transact-SQL)

Platí pro: SQL Server 2017 (14.x) a novější verze Azure SQL Managed InstanceAzure Synapse Analytics

Vygeneruje predikovanou hodnotu nebo skóre na základě uloženého modelu. Další informace naleznete v tématu Nativní bodování pomocí funkce PREDICT T-SQL.

Výběr produktu

V následujícím řádku vyberte název produktu, který vás zajímá, a zobrazí se jenom informace o daném produktu.

Poznámka:

PREDICT není k dispozici ve službě Azure SQL Database.

* SQL Server *  

* SQL Managed Instance *  

* Azure Synapse
Analýza *
 

Syntaxe

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

MODEL

Parametr MODEL se používá k určení modelu použitého pro bodování nebo predikci. Model je určen jako proměnná, literál nebo skalární výraz.

PREDICT podporuje modely natrénované pomocí balíčků RevoScaleR a revoscalepy .

Parametr MODEL se používá k určení modelu použitého pro bodování nebo predikci. Model je určen jako proměnná, literál nebo skalární výraz.

Ve službě Azure SQL Managed Instance PREDICT podporuje modely natrénované pomocí balíčků RevoScaleR a revoscalepy .

Parametr MODEL se používá k určení modelu použitého pro bodování nebo predikci. Model je určen jako proměnná, literál nebo skalární výraz nebo skalární poddotaz.

Ve službě Azure Synapse Analytics PREDICT podporuje modely ve formátu Open Neural Network Exchange (ONNX). Další informace najdete v tématu ONNX.

DATA

Parametr DATA slouží k určení dat používaných pro bodování nebo predikci. Data se zadává ve formě zdroje tabulky v dotazu. Zdrojem tabulky může být tabulka, alias tabulky, alias CTE, zobrazení nebo funkce s hodnotou tabulky.

RUNTIME = ONNX

Označuje modul strojového učení používaný ke spuštění modelu. Hodnota parametru RUNTIME je vždy ONNX. Parametr RUNTIME se vyžaduje pro Azure Synapse Analytics. Argument RUNTIME = ONNX je k dispozici pouze ve službě Azure Synapse Analytics.

WITH ( <result_set_definition> )

Klauzule WITH slouží k určení schématu výstupu vráceného PREDICT funkcí.

Kromě sloupců vrácených PREDICT samotnou funkcí jsou všechny sloupce, které jsou součástí vstupu dat, k dispozici pro použití v dotazu.

Návratové hodnoty

Není k dispozici žádné předdefinované schéma; obsah modelu není ověřen a vrácené hodnoty sloupců se ani neověřují.

  • Funkce PREDICT prochází sloupci jako vstup.
  • Funkce PREDICT také generuje nové sloupce, ale počet sloupců a jejich datových typů závisí na typu modelu, který byl použit pro predikci.

Všechny chybové zprávy související s daty, modelem nebo formátem sloupce vrátí podkladová prediktivní funkce přidružená k modelu.

Poznámky

Funkce PREDICT je podporována ve všech edicích SQL Serveru 2017 nebo novějších ve Windows a Linuxu. Služba Machine Learning Services nemusí být povolená pro použití PREDICT.

Podporované algoritmy

Model, který použijete, musí být vytvořen pomocí jednoho z podporovaných algoritmů z balíčků RevoScaleR nebo revoscalepy . Seznam aktuálně podporovaných modelů najdete v tématu Nativní bodování pomocí funkce PREDICT T-SQL.

Podporují se algoritmy, které lze převést na formát modelu ONNX .

Podporují se algoritmy, které lze převést na formát modelu ONNX a modely, které jste vytvořili pomocí jednoho z podporovaných algoritmů z balíčků RevoScaleR nebo revoscalepy . Seznam aktuálně podporovaných algoritmů v RevoScaleR a revoscalepy najdete v tématu Nativní bodování pomocí funkce PREDICT T-SQL.

Povolení

Nejsou vyžadována PREDICTžádná oprávnění , ale uživatel potřebuje EXECUTE oprávnění k databázi a oprávnění dotazovat se na všechna data, která se používají jako vstupy. Uživatel musí být také schopen číst model z tabulky, pokud byl model uložen v tabulce.

Examples

Následující příklady ukazují syntaxi volání PREDICT.

Použití funkce PREDICT v klauzuli FROM

Tento příklad odkazuje na PREDICT funkci v FROM klauzuli SELECT příkazu:

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;

Alias d zadaný pro zdroj tabulky v parametru DATA slouží k odkazování na sloupce patřící do dbo.mytable. Alias p zadaný pro PREDICT funkci slouží k odkazování na sloupce vrácené PREDICT funkcí.

  • Model je uložen jako sloupec varbinary(max) v tabulce s názvem Models. Další informace, například ID a description jsou uloženy v tabulce k identifikaci modelu.
  • Alias d zadaný pro zdroj tabulky v parametru DATA slouží k odkazování na sloupce patřící do dbo.mytable. Názvy vstupních datových sloupců by se měly shodovat s názvem vstupů modelu.
  • Alias p zadaný pro PREDICT funkci slouží k odkazování na předpovězený sloupec vrácený PREDICT funkcí. Název sloupce by měl mít stejný název jako název výstupu modelu.
  • Všechny vstupní sloupce dat a predikované sloupce jsou k dispozici k zobrazení v SELECT příkazu.

Předchozí ukázkový dotaz lze přepsat a vytvořit zobrazení zadáním MODEL skalárního poddotazu:

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;

Kombinování funkce PREDICT s příkazem INSERT

Běžným případem použití pro predikci je vygenerovat skóre vstupních dat a pak vložit předpovězené hodnoty do tabulky. Následující příklad předpokládá, že volající aplikace používá uloženou proceduru k vložení řádku obsahujícího předpovězenou hodnotu do tabulky:

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;
  • Výsledky PREDICT jsou uloženy v tabulce s názvem PredictionResults.
  • Model je uložen jako sloupec varbinary(max) v tabulce s názvem Models. Další informace, jako je ID a popis, lze uložit do tabulky a identifikovat model.
  • Alias d zadaný pro zdroj tabulky v parametru DATA slouží k odkazování na sloupce v dbo.mytable. Názvy vstupních datových sloupců by se měly shodovat s názvem vstupů modelu.
  • Alias p zadaný pro PREDICT funkci slouží k odkazování na předpovězený sloupec vrácený PREDICT funkcí. Název sloupce by měl mít stejný název jako název výstupu modelu.
  • Všechny vstupní sloupce a predikovaný sloupec jsou k dispozici pro zobrazení v SELECT příkazu.

Další informace o souvisejících konceptech najdete v následujících článcích: