次に示す簡単な例では、テーブル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;