MaxCompute の組み込み関数がビジネス要件を満たさない場合は、ユーザー定義関数 (UDF) を作成して機能を拡張できます。このトピックでは、ビジュアルインターフェイスを使用して DataWorks で UDF を作成する方法について説明します。
背景情報
ユーザー定義関数 (UDF) は既存の関数ライブラリを拡張します。クエリのカスタムロジックを定義して、データ処理を強化できます。詳細については、「UDF overview」をご参照ください。DataWorks のビジュアルインターフェイスで UDF を作成できるほか、MaxCompute Studio またはコマンドラインも使用できます。詳細については、「Create a UDF in MaxCompute Studio」および「Create a UDF in MaxCompute using commands」をご参照ください。
前提条件
関数を作成する前に、MaxCompute リソースを作成して DataWorks にアップロードする必要があります。詳細については、「Create a MaxCompute resource」をご参照ください。
リソースファイルの準備については、「Develop a UDF (Java)」または「Develop a UDF (Python 3)」をご参照ください。
制限事項
DataWorks では、ビジュアルインターフェイスを使用してアップロードされた UDF のみを表示および管理できます。MaxCompute Studio などの別のツールを使用して UDF が MaxCompute コンピューティングエンジンに追加された場合は、[MaxCompute Functions] 機能を使用して、UDF を DataWorks に手動で読み込む必要があります。その後、DataWorks で UDF を表示および管理できます。詳細については、「Manage MaxCompute functions」をご参照ください。
関数の登録
DataStudioページに移動します。
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。
-
ワークフローを作成します。詳細については、「Create a recurring workflow」をご参照ください。
-
関数を作成します。
-
ワークフローを開き、MaxCompute を右クリックして、Create Function を選択します。
-
Create Function ダイアログボックスで、Name を入力し、Path を選択します。
-
Create をクリックします。
-
Register Function ダイアログボックスで、パラメーターを設定します。
パラメーター
説明
Function Type
関数タイプを選択します。有効な値:Mathematical Operation Functions、Aggregate Functions、String Processing Functions、Date Functions、Window Functions、Other Functions。詳細については、「Use built-in functions」をご参照ください。
MaxCompute Engine Instance
読み取り専用です。
Function Name
UDF の名前です。SQL 文で関数を参照する際に使用します。名前はグローバルに一意である必要があり、関数の登録後は変更できません。
Owner
デフォルトでは、現在ログインしているアカウントが表示されます。別のアカウントを選択することもできます。
Class Name
UDF のクラス名です。形式は
resource_name.class_nameです。リソース名は Java パッケージ名または Python リソース名にすることができます。DataWorks で UDF を作成する場合、JAR または Python タイプの MaxCompute リソースを使用できます。クラス名の設定はリソースタイプによって異なります:
-
リソースタイプが JAR の場合、Class Name は
package_name.actual_class_nameの形式です。この値は、IntelliJ IDEA でcopy referenceコマンドを使用して取得できます。例:Java パッケージ名が
com.aliyun.odps.examples.udfで、実際のクラス名がUDAFExampleの場合、Class Name パラメーターをcom.aliyun.odps.examples.udf.UDAFExampleに設定します。 -
リソースタイプが Python の場合、Class Name は
python_resource_name.actual_class_nameの形式です。例:Python リソース名が
LcLognormDist_shで、実際のクラス名がLcLognormDist_shの場合、Class Name パラメーターをLcLognormDist_sh.LcLognormDist_shに設定します。説明-
リソース名に .jar または .py のサフィックスを付けないでください。
-
リソースは、使用する前にコミットおよび公開する必要があります。詳細については、「Create and use MaxCompute resources」をご参照ください。
-
Resources
関数の登録に必要なリソースを選択します。
-
ビジュアルモード:DataWorks にアップロードまたは追加されたリソースのみを選択できます。
-
コードエディター:対応する MaxCompute コンピューティングエンジン内のすべてのリソースを選択できます。
説明-
追加したリソースのパスを入力する必要はありません。
-
UDF が複数のリソースを呼び出す場合は、リソース名をカンマ (,) で区切ります。
Description
UDF の目的に関する簡単な説明です。
Expression Syntax
UDF の使用方法の例です。例:
test。Parameter Description
サポートされる入力パラメーターの型と戻り値の型に関する説明です。
Return Value
戻り値の例です (例:1)。このパラメーターは任意です。
Example
関数の使用例です。このパラメーターは任意です。
-
-
-
ツールバーの保存アイコン
をクリックして、関数を保存します。 -
関数をコミットします。
-
ツールバーの送信アイコン
をクリックします。 -
Submission ダイアログボックスで、Change Description を入力します。
-
OK をクリックします。
-
MaxCompute コンピューティングエンジン内の既存の関数とその変更履歴を表示する方法の詳細については、「Manage MaxCompute functions」をご参照ください。
関数バージョンの表示とロールバック
関数名を右クリックし、View Earlier Versions をクリックして、バージョン履歴を表示するか、ロールバックします。
ノードでの関数の使用
ユーザー定義関数の名前は直接使用できます。現在のノードのエディターに関数名をすばやく挿入するには、リソースを選択して右クリックし、Insert Function を選択します。左側のプロジェクトファイルツリーで、[Function] ノードの配下にある getregion などの対象関数を右クリックし、コンテキストメニューから [Reference Function] を選択すると、右側の SQL エディターに関数が挿入されます。たとえば、SELECT 文で getregion(ip) AS region を使用して UDF を呼び出します。
付録 1:ユーザー定義関数の表示
-
SHOW FUNCTIONSコマンドを実行して、DataWorks ワークスペースの DataStudio コンポーネントに紐づけられている MaxCompute プロジェクトに登録済みのすべての UDF を一覧表示します。 -
MaxCompute には多数の組み込み関数が用意されています。詳細については、「Overview of built-in functions」をご参照ください。
// 現在のプロジェクト内の関数を表示します。
SHOW FUNCTIONS;
付録 2:関数の詳細の表示
-
関数名を指定して
DESCRIBEまたはDESCコマンドを実行すると、UDF の詳細を表示できます。// 短縮形を使用して UDF の詳細を表示します。 DESC FUNCTION <function_name>; -
ワークフロー内の既存の関数が要件を満たさない場合は、MaxCompute UDF を作成します。その後、JAR ファイルや Python ファイルなどのリソースをアップロードして関連付けることで、データ処理機能を拡張できます。詳細については、「Manage MaxCompute resources」をご参照ください。
ベストプラクティス
UDF を作成した後、「Grant access to a specific UDF to a specified user」をご参照のうえ、UDF のアクセス制御を実装してください。
関連ドキュメント
-
MaxCompute は、JAR ファイルのワンクリックパッケージング、JAR リソースのアップロード、MaxCompute UDF の登録をサポートしています。詳細については、「Package, upload, and register」をご参照ください。
-
Java で MaxCompute UDF を作成する際に発生する可能性がある問題については、「FAQ about MaxCompute UDFs written in Java」をご参照ください。
-
Python で MaxCompute UDF を作成する際に発生する可能性がある問題については、「FAQ about MaxCompute UDFs written in Python」をご参照ください。
よくある質問
Q:DataWorks でリソースをアップロードし、UDF として定義した後、DataStudio の ODPS SQL ノードに加えて、DataAnalysis の SQL クエリでも使用できますか?
A:はい。DataWorks で登録された UDF は基盤となる MaxCompute プロジェクトに保存されるため、ODPS SQL ノードと DataAnalysis の SQL クエリの両方で使用できます。