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-1144-171K-JPN
Language
日本語 (日本)

次に示す簡単な例では、テーブルUDFのためのHASH BY句およびLOCAL ORDER BY句の使用方法を説明しています。テーブル関数add2intは、入力として2つの整数値を取り、それら両方の値と合計を返します。

問合わせQ1は、dt.y1でハッシュされ、dt.x1で各AMPに対して値順にされるdtを入力として要求するadd2intから、すべての列を選択します。指定したハッシュ法とローカルの順序付けはadd2int関数に適していない可能性があり、説明目的にのみ使用されます。

想定されるQ1の結果として、最初にdtがスプールされ、AMP間にy1でハッシュされます。各AMPでは、行がx1の値でソートされます。最終的にハッシュされソートされたスプールが、add2intへの入力として使用されます。

     CREATE TABLE t1 (
       a1 INTEGER,
       b1 INTEGER);
     CREATE TABLE t2 (
       a2 INTEGER,
       b2 INTEGER);
     REPLACE 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';
/* Query Q1 */
     WITH dt(x1,y1) AS (SELECT a1,b1
                        FROM t1)
     SELECT *  
     FROM TABLE (add2int(dt.x1,dt.y1) 
     HASH BY y1 
     LOCAL ORDER BY x1) AS tf;