17.10 - 例: 変数置換を使用した関数処理 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)

例: 連結変数式に指定された単一の値

次の例では、関数処理でMaxStepMaxnumに置換されています。ただし、AttributeValueColumnに値がないため、ValueColumnは実行されません。

これは、関数SparseSVMTrainerの関数マッピング定義usr_SVMSparseです。ValueColumn値は、変数AttributeValueColumnおよびMaxnumを含む連結変数式で構成されます。

CREATE FUNCTION MAPPING usr_SVMSparse
FOR SparseSVMTrainer SERVER TD_SERVER_DB.coprocessor
USING
InputTable IN TABLE ,
ModelTable OUT TABLE ,
IDColumn ,
SampleIdColumn ,
AttributeColumn,
LabelColumn,
ValueColumn(AttributeValueColumn||'_'||Maxnum),
HashProjection , "Hash" , HashBuckets ,
Cost , Bias , ClassWeights ,
MaxStep(Maxnum) ,
Epsilon , Seed , SequenceInputBy
;

SELECT文は、Maxnumの値として150を指定します。

SELECT * FROM usr_SVMSparse (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable (svm_iris_model)
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
Maxnum (150)
Seed ('0')
) as dt;

クエリーは実行時、関数SparseSVMTrainerによる処理のため、次のように書き換えられます。関数マッピング定義に従って、変数MaxStepMaxnumに置き換えられます。SELECT文がAttributeValueColumnの値を指定していないため、ValueColumnは処理用に実行されません。

SELECT * FROM SparseSVMTrainer (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable (svm_iris_model)
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
MaxStep (150)
Seed ('0')
) as dt;

例: 実行した連結変数式を持つパラメータ

関数マッピング定義usr_SVMSparseには、AttributeValueColumnMaxnumで構成される連結変数式を持つパラメータValueColumnが含まれています。

CREATE FUNCTION MAPPING usr_SVMSparse
FOR SparseSVMTrainer SERVER TD_SERVER_DB.coprocessor
USING
InputTable IN TABLE ,
ModelTable OUT TABLE ,
IDColumn ,
SampleIdColumn ,
AttributeColumn,
LabelColumn,
ValueColumn(AttributeValueColumn||'_'||Maxnum),
HashProjection , "Hash" , HashBuckets ,
Cost , Bias , ClassWeights ,
MaxStep(Maxnum) ,
Epsilon , Seed , SequenceInputBy
;

SELECT文は、AttributeValueColumnMaxnumの値を指定します。

SELECT * FROM usr_SVMSparse (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable (svm_iris_model)
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
AttributeValuecolumn('value')
Maxnum (150)
Seed ('0')
) as dt;

このクエリーは、実行時に次のように書き換えられます。ValueColumnの連結変数式はvalue_150に解決されます。関数マッピング定義はMaxStepMaxnumに対して置き換えるため、Maxstepは値150で実行されます。

SELECT * FROM SparseSVMTrainer (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable (svm_iris_model)
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
Valuecolumn('value_150')
MaxStep (150)
Seed ('0')
) as dt;

例: スカラー サブクエリーの変数置換

次の例では、SELECT文内のスカラー サブクエリーが実行され、AttributeValueColumnMaxnumの値が提供されます。クエリーは、実行時にValueColumnMaxStepの解決済みの値に置き換わるように書き換えられます。

関数マッピング定義usr_SVMSparseには、AttributeValueColumnMaxnumで構成される連結変数式を持つパラメータValueColumnが含まれています。

CREATE FUNCTION MAPPING usr_SVMSparse
FOR SparseSVMTrainer SERVER TD_SERVER_DB.coprocessor
USING
InputTable IN TABLE ,
ModelTable OUT TABLE ,
IDColumn ,
SampleIdColumn ,
AttributeColumn,
LabelColumn,
ValueColumn(AttributeValueColumn||'_'||Maxnum),
HashProjection , "Hash" , HashBuckets ,
Cost , Bias , ClassWeights ,
MaxStep(Maxnum) ,
Epsilon , Seed , SequenceInputBy
;

SELECT文は、AttributeValuecolumnおよびMaxnumのスカラー サブクエリーを指定します。

SELECT * FROM usr_SVMSparse (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable (svm_iris_model)
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
AttributeValuecolumn(SELECT colvarch from ssqtbl WHERE username=CURRENT_USER)
Maxnum (SELECT colint FROM ssqtbl WHERE username=USER)
Seed ('0')
) as dt;

クエリーは実行時、関数SparseSVMTrainerによる処理のために次のように書き換えられます。AttributeValueColumnのスカラー サブクエリーはvalueに解決され、Maxnumのスカラー サブクエリーは1に解決されます。ValueColumnの連結変数式はvalue_1に解決されます。関数マッピング定義に従って、MaxStepMaxnumに置き換えられます。

SELECT * FROM SparseSVMTrainer (
ON svm_iris_input_train as InputTable
OUT TABLE ModelTable ('svm_iris_model')
USING
SampleIDColumn ('id')
AttributeColumn ('attribute')
LabelColumn ('species')
Valuecolumn('value_1')
MaxStep (1)
Seed ('0')
) as dt;