Teradata Databaseは、以下の3つのタイプのUDFをサポートします。
- スカラー
- 集約またはウィンドウ集約
- テーブル関数および演算子
スカラー関数
スカラー関数は、入力引数を取り、結果として単一の値を戻します。例えば、SQLの標準スカラー関数には、CHARACTER_LENGTH、POSITION、およびSUBSTRINGなどがあります。
スカラー関数は、式の中で列名を使用する場所で使用できます。Teradata Databaseによってその式が評価される際に、そのスカラー関数が呼び出されます。関数の実行完了後、コンテキストは何も保持されません。
また、スカラー関数の使用により、ユーザー定義型(UDT)に関連したキャスト、変換、整列などの機能の実装もできます。
集約関数
集約関数は、サマリー結果を生成します。スカラー関数と違って集約関数は、リレーショナル データのいくつかのグループを取り、各グループごとに処理を実行し、グループごとに1つずつ結果を戻します。例えば、SQLの標準の集約関数には、AVG、SUM、MAX、およびMINなどがあります。
Teradata Databaseはグループ内の項目ごとに1回ずつ、そのグループの詳細値を入力引数として集約関数を呼び出します。サマリー情報を累積していくため、集約関数では、呼び出しごとにコンテキストが保持されます。
グループの作成方法や、集約UDFのコーディングでのグループの処理方法についての知識は不要です。それらは、Teradata Databaseによって自動的に処理されます。必要なのは、渡されるデータを組み合わせて、希望する結果を得るための基本的なアルゴリズムを記述することだけです。
ウィンドウ集約関数
順序付き分析ウィンドウ機能を、ユーザー定義集約関数に適用することができます。
順序付き分析関数は、順序付きの行セットが必要な分析処理、または、複数行の値を使って新しい値を計算する分析処理での一般的な演算を多数サポートします。
ウィンドウの機能を利用すると、データのサブセット(ウィンドウ)を動的に定義できるようになり、そのウィンドウの行を集約関数で操作できるようになります。ウィンドウ指定がないと、集約関数は条件に適合したすべての行に対して1つの値を返しますが、ウィンドウ集約関数は問合わせに関与している条件に適合した行ごとに新しい値を返します。
テーブル関数
テーブル関数は、SQL SELECT文のFROM句で呼び出され、SELECT文への1回のループごとに1行ずつテーブルを戻します。この関数は、渡された入力引数、または外部ファイルあるいはメッセージ キューの読み取りに基づいて、テーブルの行を生成できます。
テーブル関数が戻す行の列数は、テーブル関数を呼び出すSELECT文で、実行時に動的に指定することができます。
テーブル演算子
テーブル演算子は、SQL SELECT文のFROM句で呼び出され、1つ以上のテーブルまたはテーブル式を入力として受け入れ、テーブルを出力として生成します。詳細は、テーブル演算子を参照してください。