すべてのプロダクト
Search
ドキュメントセンター

DataWorks:カスタム関数の作成と使用

最終更新日:Aug 19, 2026

MaxCompute が提供するビルトイン関数でビジネス要件を満たせない場合は、カスタム関数を作成して対応できます。 本記事では、DataWorks のビジュアルインターフェイスを使用して UDF (ユーザー定義関数) を作成する方法について説明します。

背景情報

UDF は既存の関数ライブラリを拡張するために使用されます。 クエリ実行時に独自のロジックや計算を定義することで、より豊富なデータ処理機能を提供します。 詳細については、「UDF の概要」をご参照ください。 DataWorks が提供するビジュアルインターフェイスに加えて、MaxCompute Studio を使用して UDF を作成したり、MaxCompute のコマンドラインを使用して UDF を作成したりすることもできます。 詳細については、「MaxCompute Studio でのカスタム関数の作成」、「コマンドラインによる MaxCompute カスタム関数の作成」をご参照ください。

前提条件

関数はリソースに基づいて作成する必要があります。そのため、関数を作成する前に、まず MaxCompute リソースを作成し、そのリソースを DataWorks にアップロードまたは追加してください。 詳細については、「MaxCompute リソースの作成」をご参照ください。

説明

MaxCompute リソースを作成する際は、「Java で UDF を開発する」および「UDF 開発 (Python 3)」を参考に、MaxCompute リソースファイルを準備できます。

制限事項

DataWorks では、DataWorks のビジュアルインターフェイスを介してアップロードされたカスタム関数のみ、表示および管理がサポートされています。 他のツール (MaxCompute Studio など) を使用して MaxCompute エンジンに追加されたカスタム関数は、DataWorks の MaxCompute 関数 機能を使用して手動で DataWorks にロードする必要があります。 これにより、DataWorks で表示および関連操作を実行できるようになります。 詳細については、「MaxCompute 関数の管理」をご参照ください。

関数の登録

  1. DataWorks コンソールにログインします。 対象リージョンで、左側のナビゲーションウィンドウで データ開発と О&М > データ開発 をクリックします。 ドロップダウンリストからワークスペースを選択し、移動 データ開発 をクリックします。

  2. ワークフローを作成します。 詳細については、「自動トリガーワークフローの作成」をご参照ください。

  3. 新しい関数を作成します。

    1. 対応するワークフローを開き、MaxCompute を右クリックして、関数の新規作成 を選択します。

    2. 関数の新規作成 ダイアログボックスで、名前 を入力し、パス を選択します。

    3. Create をクリックします。

    4. 関数の登録 ダイアログボックスで、各パラメーターを設定します。

      注册函数

      パラメーター

      説明

      関数タイプ

      関数タイプを選択します。これには、算術演算関数、集計関数、文字列処理関数、日付関数、ウィンドウ関数、その他の関数 が含まれます。 詳細については、「ビルトイン関数の使用」をご参照ください。

      MaxCompute エンジンインスタンス

      デフォルトで、変更はできません。

      関数名

      UDF 関数名です。これは、SQL でこの関数を参照するために使用される名前です。 グローバルで一意である必要があり、関数登録後の変更はサポートされていません。

      所有者

      デフォルトでは現在のログインアカウントが表示されますが、他のアカウントを選択することもできます。

      クラス名

      UDF 関数のクラス名で、フォーマットは リソース名.クラス名 です。 ここで、リソース名は Java パッケージ名または Python リソース名です。

      DataWorks でカスタム関数を作成する場合、JAR と Python の 2 種類の MaxCompute リソースがサポートされています。 種類ごとにクラス名の設定は以下の通りです:

      • リソースタイプが JAR の場合、設定する クラス名 のフォーマットは Java パッケージ名.実際のクラス名 です。 IDEA で リファレンスのコピー ステートメントを使用して取得できます。

        例:com.aliyun.odps.examples.udf が Java パッケージ名で、UDAFExample が実際のクラス名の場合、クラス名 パラメーターは com.aliyun.odps.examples.udf.UDAFExample と設定します。

      • リソースタイプが Python の場合、設定する クラス名 のフォーマットは Python リソース名.実際のクラス名 です。

        例:LcLognormDist_sh が Python リソース名で、LcLognormDist_sh が実際のクラス名の場合、クラス名 パラメーターは LcLognormDist_sh.LcLognormDist_sh と設定します。

        説明
        • リソース名を記入する際、.jar または .py のサフィックスを追加する必要はありません。

        • リソースは、使用する前に送信して公開する必要があります。 詳細については、「MaxCompute リソースの作成と使用」をご参照ください。

      リソースリスト

      関数を登録するために使用するリソースを選択します。

      • ビジュアルモード:DataWorks にアップロードまたは追加されたリソースのみ選択できます。

      • スクリプトモード:対応する MaxCompute エンジン内のすべてのリソースを選択できます。

      説明
      • 追加されたリソースのパスを記入する必要はありません。

      • UDF が複数のリソースを呼び出す場合、リソースは英語のカンマ (,) で区切ります。

      説明

      現在の UDF の機能に関する簡単な説明です。

      コマンドフォーマット

      この UDF の具体的な使用方法の例です。例:test。

      メトリックの説明

      入力可能なパラメーターのタイプと戻り値のパラメータータイプに関する具体的な説明です。

      戻り値

      戻り値です。例:1。必須項目ではありません。

      サンプル

      関数内の例です。必須項目ではありません。

  4. ツールバーの 保存 アイコンをクリックして、関数を保存します。

  5. 関数を送信します。

    1. ツールバーの 提交 アイコンをクリックします。

    2. コミット ダイアログボックスで、変更内容 を入力します。

    3. 確認 をクリックします。

MaxCompute 計算エンジンに存在する関数の表示や、関数の変更履歴の確認などの操作については、「MaxCompute 関数の管理」をご参照ください。

関数バージョンの表示とロールバック

対応する関数名を右クリックし、バージョン履歴の表示 をクリックすると、関数の履歴バージョン情報を表示したり、ロールバック操作を実行したりできます。

查看

ノードでのカスタム関数の使用

カスタム関数名を直接使用できます。 リソースを選択し、右クリックして リファレンス関数 を選択すると、現在のノード編集ページでカスタム関数名をすばやく生成できます。节点中使用函数

付録一:カスタム関数リストの表示

  • SHOW FUNCTIONS コマンドを使用すると、DataWorks ワークスペースのデータ開発にバインドされている MaxCompute 計算エンジンプロジェクトに登録されているすべてのカスタム関数をリスト表示できます。

  • MaxCompute には多数のビルトイン関数があります。 詳細については、「ビルトイン関数の概要」をご参照ください。

// 現在のプロジェクトの関数を表示します。
SHOW FUNCTIONS;

付録二:カスタム関数の詳細表示

  • DESCRIBE または省略形の DESC コマンドの後に、関数名を続けてカスタム関数の詳細情報を表示できます。

    // 省略形を使用してカスタム関数の詳細情報を表示します
    DESC FUNCTION <function_name>;
  • DataWorks で、ワークフローに必要な処理ロジックが既存の関数で実現できない場合、MaxCompute カスタム関数を作成し、対応するリソース (JAR パッケージ、Python ファイルなど) をアップロードして関連付けることで、データ処理機能を管理・拡張できます。 詳細については、「MaxCompute リソースの管理」をご参照ください。

ベストプラクティス

カスタム関数の作成が完了したら、「ベストプラクティス:特定のユーザーに UDF へのアクセス権を付与する」を参考に、UDF のアクセス権限管理を実現できます。

関連ドキュメント

よくある質問

Q:DataWorks を介してアップロードされ、UDF 関数として定義されたリソースは、データ開発の ODPS SQL ノードで使用される以外に、データ分析の SQL クエリでも使用できますか?

A:はい、使用できます。 DataWorks を介して登録された UDF 関数は、実際には MaxCompute プロジェクトに保存されるため、ODPS SQL ノードだけでなく、データ分析の SQL クエリでも使用できます。