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

Dataphin:ユーザー定義関数の作成

最終更新日:Jul 08, 2025

オフラインコンピューティング関数は、オフラインコンピューティングタスクコード開発における SQL 関数の管理に使用されます。これらには、コンピューティングエンジンでデフォルトでサポートされている一般的に使用される関数と、ユーザー定義関数が含まれます。デフォルト関数は編集できません。このトピックでは、ユーザー定義関数の作成方法について説明します。

前提条件

リソースの作成を完了します。 詳細については、「リソースと参照のアップロード」をご参照ください。

背景情報

  • Dataphin は、関数をタイプに基づいてディレクトリに整理することで、関数をより適切に管理できるようにします。

  • 異なるコンピューティングエンジンは、異なるタイプの関数をサポートしています。

    コンピューティングエンジンの種類

    サポートされている関数

    オフラインエンジン

    MaxCompute

    MAXC 関数

    Hologres

    カスタム関数はサポートされていません

    Hadoop

    Hadoop 関数(Hive 関数)、Impala 関数

    TDH Inceptor

    カスタム関数はサポートされていません

    ADB for PostgreSQL

    ADB 関数

    リアルタイムエンジン

    Alibaba Blink

    FLINK 関数

    Ververica Flink

    FLINK 関数

    オープンソース Flink

    FLINK 関数

  • 外部 MaxCompute プロジェクトは、カスタム関数の作成をサポートしていません。

手順

  1. Dataphin ホームページの上部メニューバーで、[開発] > [データ開発] を選択します。

  2. 上部メニューバーで、プロジェクト を選択します(開発-本番モードでは、環境 を選択する必要があります)。

  3. 左側のナビゲーションウィンドウで、[データ処理] > [関数] を選択します。

  4. 右側の関数リストで、image アイコンをクリックし、ターゲット関数の種類を選択します。

  5. [関数の作成] ダイアログボックスで、パラメーターを構成します。

    パラメーター

    説明

    [名前]

    関数名を入力します。名前には、文字、数字、およびアンダースコア(_)を含めることができ、文字で始める必要があります。

    説明

    同じプロジェクト内では、Impala 関数と Hive 関数は、プロジェクトのどのディレクトリにあるどのカスタム関数とも同じ名前を持つことはできません。

    [リソースの選択]

    リソースファイルを選択します。ドロップダウンリストには、現在のプロジェクトに一致するリソース名が表示されます。

    説明
    • 関数の定義には JAR ファイルのみがサポートされています。

    • 複数のリソースを選択する場合、それらは同じタイプである必要があります。

    • まだリソースがない場合は、作成する必要があります。 詳細については、「リソースと参照のアップロード」をご参照ください。

    [プログラミング言語]

    Impala は、[C++][Java] で定義された関数をサポートしています。 Impala 関数を定義する必要がある場合は、リソースタイプに基づいて対応するプログラミング言語を選択します。

    [クラス名]

    クラス名を入力します。コンピューティングタイプの resource の場合、test_udf.UDFGETSrcId など、リソースからクラスの内容を抽出します。

    [タイプ]

    タイプを選択します。ドロップダウンリストには、[ウィンドウ][統計][数値][文字列][時間][IP アドレス関連関数][URL][エンコーディング][ビジネス]、および [その他] が含まれます。

    [関数の登録]

    Impala 関数を定義する必要があり、リソースのプログラミング言語が C++ の場合は、Impala 関数を作成するための文を入力します。登録された関数は、以下の構文に従う必要があります。 Location 文のバックエンドは、リソースファイルの置換と互換性があります。

    • C++ スカラー関数の作成

      CREATE FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...])
        RETURNS return_type
        SYMBOL='symbol_name'
    • C++ 集約関数の作成

      CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...])
        RETURNS return_type
        [INTERMEDIATE type_spec]
        [INIT_FN='function']
        UPDATE_FN='function'
        MERGE_FN='function'
        [PREPARE_FN='function']
        [CLOSEFN='function']
        [SERIALIZE_FN='function']
        [FINALIZE_FN='function']

    詳細については、「ユーザー定義関数(UDF)」をご参照ください。

    [構文]

    構文を入力します。構文は関数の参照形式です。例:bigintweekday (datetime date)

    [使用方法のドキュメント]

    関数の使用方法の説明を入力します。例:

    select   
    get_week_date("20170810",0,2),--8月10日の週の火曜日の日付をクエリします。
    from  cndata.dual

    [ディレクトリの選択]

    システムは、現在の関数タイプのディレクトリをデフォルトで選択します。変更する必要がある場合、システムは関数タイプディレクトリ下のサブディレクトリの変更のみをサポートします。

    たとえば、MAXC 関数を作成する場合、システムは自動的に MAXC 関数ディレクトリを選択します。ディレクトリを変更する必要がある場合、システムは MAXC 関数ディレクトリ下のサブディレクトリの選択のみをサポートします。

  6. 構成が完了したら、[送信] をクリックします。表示されるダイアログボックスで、[送信メモ] を入力し、[確認して送信] をクリックします。

    説明
    • カスタム関数によって参照されるリソースが更新された場合は、コンピューティングエンジンに登録されているカスタム関数が更新されるように、カスタム関数を再送信する必要があります。

    • 送信が成功すると、関連する参照タスクは自動的に新しいバージョンのオブジェクトを参照するため、タスクが使用できなくなる可能性があります。速やかに確認してください。

    [アドホッククエリ]データのクエリとダウンロード を参照)を使用して SQL コードを記述し(SQL コードで関数を referencing )、関数が期待される効果を満たしているかどうかを確認できます。 SQL クエリ文の例を以下に示します。

    select   
    get_week_date("20170810",0,2),--8月10日の週の火曜日の日付をクエリします。
    from  cndata.dual

次のステップ

  • プロジェクトモードが開発-本番の場合、リソースを本番環境に公開する必要があります。 詳細については、「公開タスクの管理」をご参照ください。

  • 開発モードが基本モードの場合、送信が成功した後、コンピューティングタスク開発にカスタム関数を使用できます。 詳細については、「データ開発の概要」をご参照ください。