SQL ユーザー定義関数(UDF)は、MaxCompute の機能を拡張し、より多くのパラメーター型と関数型を入力としてサポートします。このトピックでは、FUNCTION 文を使用して一時的な SQL UDF を作成する方法について説明します。
注意事項
SQL 文を使用して UDF を定義する場合は、SQL スクリプトモードで操作を実行してください。共通 SQL 編集モードで操作を実行すると、エラーが発生する可能性があります。
説明MaxCompute の SQL スクリプトモードの詳細については、「スクリプトモードの SQL」をご参照ください。
MaxCompute では、
FUNCTION文を実行して SQL UDF を作成できます。この文を使用して作成された UDF は、一時的な SQL UDF です。FUNCTION 文を使用して UDF が作成された後、UDF は MaxCompute のメタデータシステムに保存されません。 MaxCompute の関数リストで UDF をクエリすることはできません。 SQL UDF は、UDF が定義されているスクリプト内でのみ呼び出すことができ、他のクエリ環境では呼び出すことができません。説明永続的な SQL UDF を作成する方法の詳細については、「CREATE SQL FUNCTION」をご参照ください。
SQL 文を使用して UDF を定義する場合は、UDF の入力パラメーターのデータ型が MaxCompute でサポートされているデータ型であることを確認してください。 MaxCompute でサポートされているデータ型の詳細については、「MaxCompute V2.0 データ型エディション」をご参照ください。 UDF が作成された後、呼び出す SQL UDF の入力パラメーターのデータ型が、定義された UDF の入力パラメーターのデータ型と同じであることを確認してください。
SQL UDF を作成、クエリ、呼び出し、または削除する場合は、使用する Alibaba Cloud アカウントに必要な関数レベルの権限が付与されていることを確認してください。 関数レベルの権限と承認操作の詳細については、「MaxCompute の権限」をご参照ください。
構文
function <function_name>(@<parameter_in1> <datatype>[, @<parameter_in2> <datatype>...])
[returns @<parameter_out> <datatype>]
as [begin]
<function_expression>
[end];パラメーター
function_name: 必須。このパラメーターは、作成する SQL UDF の名前を指定します。関数名はプロジェクト内で一意である必要があり、ビルトイン関数と同じ名前にすることはできません。同じ名前の関数は 1 回だけ登録できます。 LIST FUNCTIONS 文を実行して、プロジェクト内のすべての関数を表示し、既存の関数が作成する関数と同じ名前かどうかを確認できます。
parameter_in: 必須。このパラメーターは、作成する SQL UDF の入力パラメーターを指定します。入力パラメーターは、匿名関数を含む関数型にすることができます。入力パラメーターが関数型である SQL UDF を作成する方法の詳細については、「入力パラメーターが関数型である SQL UDF を作成する例」をご参照ください。入力パラメーターが匿名関数である SQL UDF を作成する方法の詳細については、「入力パラメーターが匿名関数である SQL UDF を作成する例」をご参照ください。
datatype: 必須。このパラメーターは、UDF の入力パラメーターのデータ型を指定します。 MaxCompute でサポートされているデータ型の詳細については、「MaxCompute V2.0 データ型エディション」をご参照ください。
returns: オプション。このパラメーターは、UDF の戻り値を指定します。戻り値は変数です。このパラメーターを指定しない場合、function_name パラメーターの値がデフォルトで返されます。
parameter_out: 必須。このパラメーターは、UDF のレスポンスパラメーターを指定します。
function_expression: 必須。このパラメーターは、UDF の式(実装ロジック)を指定します。
例
function my_add(@a BIGINT) as @a + 1;関連文
CREATE SQL FUNCTION: 永続的な SQL UDF を作成します。永続的な SQL UDF が作成され、MaxCompute のメタデータシステムに保存されると、すべてのクエリ操作で UDF を呼び出すことができます。
DESC FUNCTION: 永続的に保存された UDF に関する情報(関数名、所有者、作成時刻、クラス名、リソースリストなど)をクエリします。一時的な SQL UDF は、この文を使用してクエリすることはできません。
DROP FUNCTION: 既存の UDF を MaxCompute プロジェクトから削除します。
SELECT FUNCTION: SQL UDF を呼び出します。一時的な SQL UDF は、UDF が定義されているスクリプト内でのみ呼び出すことができ、他のクエリ環境では呼び出すことができません。