第11章 ユーザー定義関数
11.1. ユーザー定義関数 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Teiid Designer では、カスタムまたはユーザー定義関数 (UDF) を使用して Teiid の関数ライブラリーを拡張できます。以下のプロパティーを用いて UDF を定義できます。
- 関数名 - 以下を念頭に置いて関数名を作成してください。
- 既存の Teiid System 関数をオーバーロードできません。
- 関数名は、引数の数に対してモデルのユーザー定義関数全体で一意でなければなりません。異なる数の引数タイプでは同じ関数名を使用できるため、ユーザー定義関数をオーバーロードできます。
- 関数名に「.」文字を含めることはできません。
- 関数名は 225 文字以下でなければなりません。
- 入力パラメーター - 入力パラメーターはタイプ固有の署名リストを定義します。すべての引数は必要であると見なされます。
- 戻り値の型 - 戻されるスカラー値の予想される型。
- プッシュダウン - 予期されるプッシュダウン動作を示します。REQUIRED、NEVER、または ALLOWED のいずれかになります。NEVER または ALLOWED が指定されると、関数の Java 実装を提供する必要があります。REQUIRED が指定されると、ソースのトランスレーターを拡張し、この関数をプッシュダウン関数ライブラリーに追加する必要があります。
- invocationClass/invocationMethod- UDF がプッシュダウンされなかったときに呼び出すメソッドを示すオプションのプロパティー。
- 決定論 - メソッドが常に同じ入力パラメーターに対して同じ結果を返すかどうか。デフォルトは false です。パフォーマンスが向上するため、同じ入力に対して同じ値を返す場合は関数を決定論としてマーク付けすることが重要になります。
プッシュダウンが必要な関数でも、Teiid が関数を適切に解析および解決できるようにするため、UDF として追加する必要があります。プッシュダウンスカラー関数は通常のユーザー定義関数とは異なり、エンジンでの評価にコードが提供されません。プッシュダウンが必要な関数が適切なソースによって評価できない場合は例外が発生します。