例: テーブル関数への入力パラメータ順序のハッシュ - 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

この例は、UDFテーブルでのHASH BY句の使用を示します。テーブル関数add2intは、入力として2つの整数値を取り、それら両方の値と合計を返します。

この例の問合わせは、add2intからすべての列を選択します。add2intでは、その入力であるdtdt.y1でハッシュされることを指定しています。指定したハッシュ法はadd2int関数に適していない可能性があり、説明目的にのみ使用されます。

予測される問合わせの処理として、最初にdtがスプールされ、AMP間にy1でハッシュされます。最終的にハッシュされたスプールが、add2intへの入力として使用されます。

     CREATE TABLE t1 (
       a1 INTEGER,
       b1 INTEGER);

     CREATE TABLE t2 (
       a2 INTEGER,
       b2 INTEGER);

     CREATE FUNCTION add2int (
       a INTEGER,
       b INTEGER)
     RETURNS TABLE (
       addend1 INTEGER,
       addend2 INTEGER,
       mysum INTEGER)
     SPECIFIC add2int
     LANGUAGE C
     NO SQL
     PARAMETER STYLE SQL
     NOT DETERMINISTIC
     CALLED ON NULL INPUT
     EXTERNAL NAME 'CS!add3int!add2int.c';
     WITH dt(x1,y1) AS (SELECT a1,b1
                        FROM t1)

     SELECT *
     FROM TABLE (add2int(dt.x1,dt.y1)
     HASH BY y1) AS aa;