例: 入力テーブル変数置換による関数処理 - Teradata Database - Teradata Vantage NewSQL Engine - 例: 入力テーブル変数置換による関数処理

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

SELECT文内の入力テーブル相関名が、関数マッピング定義のIN TABLE置換変数と一致する場合、関数マッピング定義の対応するIN TABLEパラメータ名が関数処理のために置き換えられます。

関数AllPairsShortestPathの関数マッピング定義usr_AllPairsShortestPathには、置換のためのIN TABLE変数が含まれています。

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(GroupCol) ,
EdgeWeight(2) ,
MaxDistance(Distance) ,
Directed ,GroupSize ,SequenceInputBy;

このSELECT文は、テーブルの相関名としてvertexedgeを指定します。

SELECT * FROM usr_AllPairsShortestPath (
ON callers AS vertex PARTITION BY callerid
ON calls AS edge PARTITION BY callerfrom
USING
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) as dt ORDER BY source, target;

クエリーは、関数の処理中に次のように書き換えられます。テーブル相関名verticesvertexの代わりに使用されて、テーブル相関名edgesedgeの代わりに使用されます。

SELECT * FROM AllPairsShortestPath (
ON callers AS vertices PARTITION BY callerid
ON calls AS edges PARTITION BY callerfrom
TargetKey ('callerto')
EdgeWeight ('calls')
MaxDistance ('-1')
) ORDER BY source, target;