MaxCompute プロジェクトにユーザー定義関数 (UDF) を作成します。
前提条件
UDF を登録する前に、ADD JAR <localfile> [COMMENT '<comment>'][-f]; コマンドを実行して、必要なリソースを MaxCompute プロジェクトに追加する必要があります。詳細については、「ADD JAR」をご参照ください。
制限事項
関数名はプロジェクト内で一意である必要があります。プロジェクト内に既存の関数と同じ名前の関数を作成することはできません。
UDF は MaxCompute のビルトイン関数を上書きできません。プロジェクトのオーナーのみが UDF を使用してビルトイン関数を上書きできます。ビルトイン関数を上書きする UDF を使用すると、SQL 文の実行後にジョブの Logview のサマリーに警告情報が表示されます。
構文
CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;パラメーター
function_name: 必須。作成する UDF の名前。
package_to_class: 必須。作成する UDF のクラス。このパラメーターは大文字と小文字を区別し、一重引用符 (') で囲む必要があります。
Java UDF の場合、この名前を最上位のパッケージ名から UDF クラス名までの完全修飾クラス名として指定します。
Python UDF の場合、この名前を Python スクリプト名.クラス名 のフォーマットで指定します。
説明Python スクリプト名は、リソースを一意に識別する基になるリソース名を参照します。たとえば、リソースを
pyudf_test.pyとしてアップロードし、DataStudio でPYUDF_TEST.pyに名前を変更するか、MaxCompute クライアントを使用して上書きした場合でも、基になるリソース名はpyudf_test.pyのままです。したがって、ユーザー定義関数を登録するとき、クラス名はpyudf_test.SampleUDFである必要があります。LIST RESOURCES;コマンドを実行して、すべてのリソースの基になる名前を表示できます。
resource_list: 必須。UDF で使用されるリソースのリスト。
リソースリストには、UDF コードを含むリソースを含める必要があります。リソースが MaxCompute にアップロードされていることを確認してください。
コードが Distributed Cache API を呼び出してリソースファイルを読み取る場合、このリソースリストには UDF によって読み取られるリソースファイルのリストも含まれている必要があります。
リソースリストは複数のリソース名で構成され、一重引用符 (') で囲む必要があります。リソース名はコンマ (,) で区切る必要があります。
別のプロジェクトのリソースを指定するには、
<project_name>/resources/<resource_name>フォーマットを使用します。
説明スキーマが有効になっていて、他のプロジェクトのリソースを使用する必要がある場合は、「スキーマ内のオブジェクトを操作する」をご参照ください。
例
例 1:
my_lower関数を作成します。Java UDF クラスorg.alidata.odps.udf.examples.Lowerは my_lower.jar にあります。CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';例 2:
my_lower関数を作成します。Python UDF クラス MyLower はtest_projectプロジェクト内の pyudf_test.py スクリプトにあります。CREATE FUNCTION my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';例 3:
test_udtf関数を作成します。Java UDF クラスcom.aliyun.odps.examples.udf.UDTFResourceは udtfexample1.jar にあり、この関数は FILE リソース file_resource.txt、Table リソース table_resource1、および Archive リソース test_archive.zip にも依存します。CREATE FUNCTION test_udtf AS 'com.aliyun.odps.examples.udf.UDTFResource' USING 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';
関連する文
FUNCTION: MaxCompute のメタデータシステムに SQL 関数を保存する必要がない場合は、一時的な SQL 関数を作成できます。これらの関数は、現在の SQL スクリプトにのみ適用されます。
DELETE FUNCTION: 関数を削除します。UDF を記述し、MaxCompute エントリオブジェクトの delete_function() メソッドを呼び出して UDF を削除できます。
DROP FUNCTION: MaxCompute プロジェクトから既存の UDF を削除します。
DESC FUNCTION: MaxCompute プロジェクト内の指定された UDF の情報を表示します。情報には、UDF の名前、オーナー、作成時間、クラス名、およびリソースリストが含まれます。
LIST FUNCTIONS: MaxCompute プロジェクト内のすべての UDF の情報を表示します。
UPDATE FUNCTION: 関数を更新します。UDF を記述し、MaxCompute の update メソッドを呼び出して UDF を更新できます。