PREDICT (Transact-SQL)PREDICT (Transact-SQL)

適用対象:Applies to: はいSQL Server 2017 (14.x)SQL Server 2017 (14.x)yesSQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降 はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics適用対象:Applies to: はいSQL Server 2017 (14.x)SQL Server 2017 (14.x)yesSQL Server 2017 (14.x)SQL Server 2017 (14.x) and later はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

格納されているモデルに基づいて予測値やスコアを生成します。Generates a predicted value or scores based on a stored model. 詳細については、「PREDICT T-SQL 関数を使用したネイティブ スコアリング」をご覧ください。For more information, see Native scoring using the PREDICT T-SQL function.

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

引数Arguments

MODELMODEL

MODEL パラメーターは、スコア付けまたは予測に使用するモデルを指定するために使用されます。The MODEL parameter is used to specify the model used for scoring or prediction. モデルは、変数、リテラル、またはスカラー式として指定されます。The model is specified as a variable or a literal or a scalar expression.

PREDICTRevoScaleRrevoscalepy パッケージを使用してトレーニングされたモデルをサポートします。PREDICT supports models trained using the RevoScaleR and revoscalepy packages.

MODEL パラメーターは、スコア付けまたは予測に使用するモデルを指定するために使用されます。The MODEL parameter is used to specify the model used for scoring or prediction. モデルは、変数、リテラル、またはスカラー式として指定されます。The model is specified as a variable or a literal or a scalar expression.

Azure SQL Managed Instance では、PREDICTOpen Neural Network Exchange (ONNX) 形式のモデル、または revoscalepy および revoscalepy パッケージを使用してトレーニングされたモデルをサポートしています。In Azure SQL Managed Instance, PREDICT supports models in Open Neural Network Exchange (ONNX) format or models trained using the RevoScaleR and revoscalepy packages.

MODEL パラメーターは、スコア付けまたは予測に使用するモデルを指定するために使用されます。The MODEL parameter is used to specify the model used for scoring or prediction. モデルは、変数、リテラル、スカラー式、またはスカラー サブクエリとして指定されます。The model is specified as a variable or a literal or a scalar expression or a scalar subquery.

Azure Synapse Analytics では、PREDICTOpen Neural Network Exchange (ONNX) 形式のモデルをサポートしています。In Azure Synapse Analytics, PREDICT supports models in Open Neural Network Exchange (ONNX) format.

データDATA

DATA パラメーターは、スコア付けまたは予測に使用するモデルを指定するために使用されます。The DATA parameter is used to specify the data used for scoring or prediction. データは、クエリ内でテーブル ソースの形式で指定されます。Data is specified in the form of a table source in the query. テーブル ソースには、テーブル、テーブルの別名、CTE の別名、ビュー、またはテーブル値関数のいずれかを指定できます。Table source can be a table, table alias, CTE alias, view, or table-valued function.

RUNTIME = ONNXRUNTIME = ONNX

重要

RUNTIME = ONNX 引数は Azure SQL Managed Instance および Azure SQL Edge でのみ使用できます。The RUNTIME = ONNX argument is only available in Azure SQL Managed Instance and Azure SQL Edge.

モデルの実行に使用される機械学習エンジンを示します。Indicates the machine learning engine used for model execution. RUNTIME パラメーターの値は常に ONNX です。The RUNTIME parameter value is always ONNX. Azure SQL Edge にはこのパラメーターが必須です。The parameter is required for Azure SQL Edge. Azure SQL Managed Instance では、パラメーターは省略可能で、ONNX モデルを使用する場合にのみ使用されます。On Azure SQL Managed Instance, the parameter is optional and only used when using ONNX models.

WITH ( <result_set_definition> )WITH ( <result_set_definition> )

WITH 句は、PREDICT 関数によって返される出力のスキーマを指定するのに使用されます。The WITH clause is used to specify the schema of the output returned by the PREDICT function.

PREDICT 関数自体から返される列に加え、データ入力の一部であるすべての列がクエリで使用できます。In addition to the columns returned by the PREDICT function itself, all the columns that are part of the data input are available for use in the query.

戻り値Return values

定義済みのスキーマは使用できません。モデルのコンテンツは検証されず、返された列の値も検証されません。No predefined schema is available; the contents of the model is not validated and the returned column values are not validated either.

  • PREDICT 関数は入力として列を通過します。The PREDICT function passes through columns as input.
  • PREDICT 関数では、新しい列も生成されますが、列の数とそのデータ型は、予測に使用されたモデルの種類に依存します。The PREDICT function also generates new columns, but the number of columns and their data types depends on the type of model that was used for prediction.

データ、モデル、または列形式に関連するすべてのエラー メッセージは、モデルに関連付けられている基になる予測関数から返されます。Any error messages related to the data, the model, or the column format are returned by the underlying prediction function associated with the model.

解説Remarks

PREDICT 関数は、SQL Server 2017 以降のすべてのエディションで、Windows および Linux 上でサポートされています。The PREDICT function is supported in all editions of SQL Server 2017 or later, on Windows and Linux. PREDICT を使用するために、Machine Learning Services を有効にする必要はありません。Machine Learning Services does not need to be enabled to use PREDICT.

サポートされているアルゴリズムSupported algorithms

使用するモデルは、RevoScaleR または revoscalepy パッケージからサポートされているアルゴリズムのいずれかを使用して作成されている必要があります。The model that you use must have been created using one of the supported algorithms from the RevoScaleR or revoscalepy packages. 現在サポートされているモデルの一覧については、PREDICT T-SQL 関数を使用したネイティブ スコアリングに関するページを参照してください。For a list of currently supported models, see Native scoring using the PREDICT T-SQL function.

ONNX モデル形式に変換できるアルゴリズムがサポートされています。Algorithms that can be converted to ONNX model format are supported.

ONNX モデル形式、およびRevoScaleR または revoscalepy パッケージからサポートされているアルゴリズムのいずれかを使用して作成したモデルに変換できるアルゴリズムがサポートされています。Algorithms that can be converted to ONNX model format and models that you have created using one of the supported algorithms from the from the RevoScaleR or revoscalepy packages are supported. RevoScaleR および revoscalepy で現在サポートされているアルゴリズムの一覧については、PREDICT T-SQL 関数を使用したネイティブ スコアリングに関するページを参照してください。For a list of currently supported algorithms in RevoScaleR and revoscalepy, see Native scoring using the PREDICT T-SQL function.

アクセス許可Permissions

PREDICT にはアクセス許可は必要ありませんが、ユーザーは、データベースに対する EXECUTE アクセス許可と、入力として使用される任意のデータをクエリするためのアクセス許可が必要です。No permissions are required for PREDICT; however, the user needs EXECUTE permission on the database, and permission to query any data that is used as inputs. モデルがテーブルに格納されている場合、ユーザーはテーブルからモデルを読み込める必要もあります。The user must also be able to read the model from a table, if the model has been stored in a table.

Examples

次の例は、PREDICT を呼び出す構文を示しています。The following examples demonstrate the syntax for calling PREDICT.

FROM 句で PREDICT を使用するUsing PREDICT in a FROM clause

この例では、SELECT ステートメントの FROM 句内の PREDICT 関数を参照します。This example references the PREDICT function in the FROM clause of a SELECT statement:

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) WITH (Score FLOAT) AS p;

DATA パラメーターでテーブル ソースに指定された別名 d は、dbo.mytable に属する列を参照するために使用されます。The alias d specified for table source in the DATA parameter is used to reference the columns belonging to dbo.mytable. PREDICT 関数に指定された別名 p は、PREDICT 関数によって返される列を参照するために使用されます。The alias p specified for the PREDICT function is used to reference the columns returned by the PREDICT function.

  • モデルは varbinary(max) 列として Models という名前のテーブルに格納されます。The model is stored as varbinary(max) column in table call Models. モードを識別するために、ID説明などの追加情報がテーブルに保存されます。Additional information such as ID and description is saved in the table to identify the mode.
  • DATA パラメーターでテーブル ソースに指定された別名 d は、dbo.mytable に属する列を参照するために使用されます。The alias d specified for table source in the DATA parameter is used to reference the columns belonging to dbo.mytable. 入力データ列の名前は、モデルの入力名と一致している必要があります。The input data column names should match the name of inputs for the model.
  • PREDICT 関数に指定された別名 p は、PREDICT 関数によって返される予測される列を参照するために使用されます。The alias p specified for the PREDICT function is used to reference the predicted column returned by the PREDICT function. 列名は、モデルの出力名と同じ名前にする必要があります。The column name should have the same name as the output name for the model.
  • すべての入力データ列と予測される列は、SELECT ステートメントで表示できるようになります。All input data columns and the predicted columns are available to display in the SELECT statement.

前の例のクエリは、スカラー サブクエリとして MODEL を指定することにより、ビューを作成するように書き換えることができます。The preceding example query can be rewritten to create a view by specifying MODEL as a scalar subquery:

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) WITH (Score FLOAT) AS p;

PREDICT を INSERT ステートメントと結合するCombining PREDICT with an INSERT statement

予測の一般的なユース ケースは、入力データ用のスコアを生成してから、予測した値をテーブルに挿入する方法です。A common use case for prediction is to generate a score for input data, and then insert the predicted values into a table. 次の例では、呼び出し元のアプリケーションがストアド プロシージャを使用して予測値を含む行をテーブルに挿入することを前提としています。The following example assumes the calling application uses a stored procedure to insert a row containing the predicted value into a table:

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;
  • PREDICT の結果は、PredictionResults という名前のテーブルに格納されます。The results of PREDICT are stored in a table called PredictionResults.
  • モデルは varbinary(max) 列として Models という名前のテーブルに格納されます。The model is stored as varbinary(max) column in table call Models. モデルを識別するために、ID や説明などの追加情報がテーブルに保存されます。Additional information such as ID and description can be saved in the table to identify the model.
  • DATA パラメーターのテーブル ソースに指定された別名 d は、dbo.mytable 内の列を参照するために使用されます。入力データ列の名前は、モデルの入力の名前と一致している必要があります。The alias d specified for table source in the DATA parameter is used to reference the columns in dbo.mytable.The input data column names should match the name of inputs for the model.
  • PREDICT 関数に指定された別名 p は、PREDICT 関数によって返される予測される列を参照するために使用されます。The alias p specified for the PREDICT function is used to reference the predicted column returned by the PREDICT function. 列名は、モデルの出力名と同じ名前にする必要があります。The column name should have the same name as the output name for the model.
  • すべての入力列と予測される列は、SELECT ステートメントで表示できるようになります。All input columns and the predicted column are available to display in the SELECT statement.

次のステップNext steps