例: スカラー サブクエリーを使用した関数処理 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

関数AllPairsShortestPathの関数マッピング定義usr_AllPairsShortestPathは、GroupColumnDistanceで構成される連結変数式としてTargetKeyを指定します。Distanceのデフォルト値は、スカラー サブクエリーから導出されます。

SELECT distnum FROM ssqtbl WHERE username=CURRENT_USER
CREATE FUNCTION MAPPING usr_AllPairsShortestPath
FOR AllPairsShortestPath SERVER TD_SERVER_DB.coprocessor
USING
vertices(vertex) IN TABLE ,
edges(edge) IN TABLE ,
sources(source) IN TABLE ,
targets(trgt) IN TABLE ,
TargetKey(GroupColumn||'_'||Distance) ,
EdgeWeight('calls') ,
MaxDistance(Distance) , Distance(SELECT distnum FROM ssqtbl WHERE username=CURRENT_USER),
Directed ,GroupSize ,SequenceInputBy;

このSELECT文は、GroupColumnのスカラー サブクエリーを指定します。CURRENTログイン ユーザーのスカラー サブクエリー テーブルssqtblでは、distnumの値は5で、tabnametabl1です。

SELECT * FROM usr_AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
USING
GroupColumn(SELECT tabname FROM ssqtbl WHERE username=CURRENT_USER)
) as dt ORDER BY source, target;

実行時、このクエリーは次のように書き換えられます。関数マッピング定義はTargetKeyの連結式を指定します。これはtabl_5に解決されます。Distanceスカラー サブクエリーは5に解決されます。MaxDistanceDistanceに置き換えられます。

SELECT * FROM AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
USING
TargetKey('tabl_5')
MaxDistance('5')
EdgeWeight('calls')
) as dt ORDER BY source, target;