ここでは、クライアントから共通コマンドを使用して関数を操作する方法を紹介します。

DataWorks に搭載されている可視化オンラインデータ開発ツールを使用して、関数を操作することもできます。

関数の作成

コマンド形式:
CREATE FUNCTION <function_name> AS <package_to_class> USING <resource_list>;
パラメーター
  • function_name: SQL で参照される UDF 名です。
  • package_to_class: Java UDF の場合、この名前が、完全修飾クラス名 (最上位パッケージ名から UDF クラス名まで) です。 このパラメーターは二重引用符で囲む必要があります。また、Python UDF の場合、この名前が python script name.class name です。 Java UDF と Python スクリプトの場合、このパラメーターを指定する際は二重引用符 (““) で囲む必要があります。 名前は引用符で囲む必要があります。
  • resource_list: UDF で使用するリソースリストを指定します。
    • UDF コードが保存されているリソースをリストに含める必要があります。
    • UDF コードが分散キャッシュインターフェイスを通してリソースファイルを読み取る場合、このリストに UDF で読み取られるリソースリストも含めます。
    • リソースリストは、カンマ (,) で区切られた複数のリソース名で構成されます。 リソースリストは二重引用符 (“”) で囲む必要があります。
    • リソースが割り当てられているプロジェクトを次のように指定します。 <project_name>/resources/<resource_name>
例:
  • org.alidata.odps.udf.examples.Lower という Java UDF クラスが my_lower.jar にあるとします。関数 my_lower を作成するコマンドは、次の通りです。
    CREATE FUNCTION test_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
  • Python UDF の MyLower を pyudf_test.py プロジェクトで使用するとします。関数 my_lower を作成するコマンドは、次の通りです。
    create function test_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
  • Java UDF クラス com.aliyun.odps.examples.udf.UDTFResource が、udtfexample1.jar 内にあり、ファイルリソース file_resource.txt およびテーブルリソース table_resource1 と依存関係にあるとします。関数 test_udtf を作成するコマンドは、次の通りです。
    create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1,test_archive.zip';
  • リソースファイルと同様に、同じ名前の UDF は一度しか登録できません。
  • 通常、UDF はシステムの組み込み関数を上書きすることはできません。 プロジェクトオーナーのみが、組み込み関数を上書きする権限を持ちます。組み込み関数を上書きする UDF を使用すると、SQL 実行後にサマリーに警告が出力されます。

関数の削除

コマンド形式:
DROP FUNCTION <function_name>;
例:
DROP FUNCTION test_lower;

関数一覧の表示

コマンド形式:
list functions; --現行プロジェクト内のすべてのユーザー定義関数を表示します。
list functions -p my_project; --プロジェクト 'my_project' 内のすべてのユーザー定義関数を表示します。