メインコンテンツまでスキップ
バージョン: 4.x

CREATE FUNCTION

説明

この文は、カスタム関数を作成するために使用されます。

構文

CREATE [ GLOBAL ] 
[{AGGREGATE | TABLES | ALIAS }] FUNCTION <function_name>
(<arg_type> [, ...])
[ RETURNS <ret_type> ]
[ INTERMEDIATE <inter_type> ]
[ WITH PARAMETER(<param> [,...]) AS <origin_function> ]
[ PROPERTIES ("<key>" = "<value>" [, ...]) ]

必須パラメータ

1. <function_name>

function_namedb1.my_funcのようなデータベース名が含まれている場合、カスタム関数は対応するデータベースに作成されます。そうでなければ、関数は現在のセッションのデータベースに作成されます。新しい関数の名前とパラメータは、現在の名前空間の既存の関数と同一であってはなりません。同一の場合、作成は失敗します。

2. <arg_type>

関数の入力パラメータの型です。可変長パラメータの場合は、, ...を使用してそれらを示します。可変長型の場合、可変長パラメータの型は最後の非可変長パラメータの型と一致している必要があります。

3. <ret_type>

関数の戻りパラメータの型です。これは新しい関数を作成するための必須パラメータです。既存の関数のエイリアスを作成する場合、このパラメータは不要です。

オプションパラメータ

1. GLOBAL

指定された場合、作成される関数はグローバルに有効になります。

2. AGGREGATE

指定された場合、作成される関数は集約関数になります。

3. TABLES

指定された場合、作成される関数はTable関数になります。

4. ALIAS

指定された場合、作成される関数はエイリアス関数になります。

関数の型を表す上記のパラメータがいずれも選択されていない場合、作成される関数はスカラー関数であることを示します。

5. <inter_type>

集約関数の中間段階でのデータ型を示すために使用されます。

6. <param>

エイリアス関数のパラメータを示すために使用され、少なくとも1つのパラメータが必要です。

7. <origin_function>

エイリアス関数に対応する元の関数を示すために使用されます。

8. <properties>

  • file: ユーザ定義関数(UDF)を含むJARパッケージを示します。マルチマシン環境では、HTTPを介してダウンロードすることも可能です。このパラメータは必須です。
  • symbol: UDFクラスを含むクラス名を示します。このパラメータは必須です。
  • type: UDF呼び出しタイプを示します。デフォルトはNativeです。Java UDFを使用する場合はJAVA_UDFを使用してください。
  • always_nullable: UDFの結果がNULL値を含む可能性があるかどうかを示します。これはオプションパラメータで、デフォルト値はtrueです。

アクセス制御要件

このコマンドを実行するには、ユーザはADMIN_PRIV権限を持っている必要があります。

  1. カスタムUDF関数を作成します。詳細については、JAVA-UDFを参照してください。

    CREATE FUNCTION java_udf_add_one(int) RETURNS int PROPERTIES (
    "file"="file:///path/to/java-udf-demo-jar-with-dependencies.jar",
    "symbol"="org.apache.doris.udf.AddOne",
    "always_nullable"="true",
    "type"="JAVA_UDF"
    );
  2. カスタムUDAF関数を作成します。

    CREATE AGGREGATE FUNCTION simple_sum(INT) RETURNS INT PROPERTIES (
    "file"="file:///pathTo/java-udaf.jar",
    "symbol"="org.apache.doris.udf.demo.SimpleDemo",
    "always_nullable"="true",
    "type"="JAVA_UDF"
    );
  3. カスタムUDTF関数を作成します。

    CREATE TABLES FUNCTION java_udtf(string, string) RETURNS array<string> PROPERTIES (
    "file"="file:///pathTo/java-udaf.jar",
    "symbol"="org.apache.doris.udf.demo.UDTFStringTest",
    "always_nullable"="true",
    "type"="JAVA_UDF"
    );
  4. カスタムエイリアス関数を作成します。詳細については、Alias Functionを参照してください。

    CREATE ALIAS FUNCTION id_masking(INT) WITH PARAMETER(id) AS CONCAT(LEFT(id, 3), '****', RIGHT(id, 4));
  5. グローバルカスタムエイリアス関数を作成します。

    CREATE GLOBAL ALIAS FUNCTION id_masking(INT) WITH PARAMETER(id) AS CONCAT(LEFT(id, 3), '****', RIGHT(id, 4));