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

MaxCompute:関数操作

最終更新日:Mar 27, 2026

MaxCompute は、ビルトイン関数とユーザー定義関数 (UDF) の2種類の関数をサポートしています。ビルトイン関数はすぐに利用可能で、セットアップは不要です。UDF は、SQL ステートメントで呼び出す前に登録する必要があります。

このトピックでは、UDF の一般的な管理操作である関数の作成、削除、表示について説明します。

操作概要

操作必要な権限プラットフォーム
UDF の作成関数に対する書き込み権限MaxCompute クライアント、DataWorks コンソール、MaxCompute Studio
UDF の削除関数に対する削除権限
UDF の表示関数に対する読み取り権限
すべての UDF のリストプロジェクトオブジェクトに対するリスト権限
すべてのビルトイン関数のリストプロジェクトオブジェクトに対するリスト権限

前提条件

開始する前に、以下を確認してください。

  • UDF コードを含む JAR または Python リソースが MaxCompute にアップロードされていること

  • 操作に必要な権限があること (上記の表を参照)

UDF の作成

MaxCompute プロジェクトに UDF を登録し、SQL ステートメントで呼び出せるようにします。

制限事項

  • 関数名はプロジェクト内で一意である必要があります。既存の関数と同じ名前の関数を作成することはできません。

  • UDF はビルトイン関数を上書きできません。プロジェクトオーナーのみが、ビルトイン関数と名前を共有する UDF を登録できます。このような UDF が呼び出されると、SQL ジョブの実行後に Logview Summary に警告が表示されます。

構文

create function <function_name> as '<package_to_class>' using '<resource_list>';

パラメータ

パラメータ必須説明
function_nameはい作成する UDF の名前。プロジェクト内で一意である必要があります。
package_to_classはい`UDF の完全修飾クラスパス。大文字と小文字を区別します。シングルクォーテーション (`'`) で囲む必要があります。Java UDF の場合は、トップレベルのパッケージ名から UDF クラス名までの完全なパスを指定します。Python UDF の場合は、script_name.ClassName 形式を使用します。
resource_listはい'カンマ区切りのリソース名のリスト。シングルクォーテーション (`'`) で囲みます。UDF コードを含むリソースを含める必要があります。UDF が Distributed Cache API を呼び出してリソースファイルを読み取る場合は、それらのリソースファイルも含まれます。別のプロジェクトからリソースを参照するには、<project_name>/resources/<resource_name> 形式を使用します。
説明

Python リソース名は大文字と小文字を区別しません。基盤となるリソース名は、最初のアップロード時に使用された名前によって決定されます。たとえば、最初に pyudf_test.py をアップロードし、後で PYUDF_TEST.py に名前を変更しても、基盤となるリソース名は pyudf_test.py のままです。UDF を登録する際には、クラス名が基盤となる名前に一致する必要があります (pyudf_test.SampleUDF)。すべてのリソースの基盤となる名前を確認するには、list resources; を実行します。

例 1: Java UDF

my_lower 関数を、my_lower.jar 内の Java クラス org.alidata.odps.udf.examples.Lower を使用して作成します。

create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';

例 2: 別のプロジェクトからの Python UDF

test_project 内のリソースである pyudf_test.py スクリプト内の Python クラス MyLower を使用して、my_lower 関数を作成します。

create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';

例 3: 複数のリソースを持つ Java ユーザー定義テーブル関数 (UDTF)

udtfexample1.jar 内のクラス com.aliyun.odps.examples.udf.UDTFResource を使用して 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 を MaxCompute プロジェクトから削除します。

構文

drop function <function_name>;

パラメータ

パラメータ必須説明
function_nameはい削除する UDF の名前。

-- my_lower 関数を削除します。
drop function my_lower;

UDF の表示

特定の UDF のメタデータ (名前、所有者、作成時間、クラス、リソースリスト) を返します。

構文

desc function <function_name>;

パラメータ

パラメータ必須説明
function_nameはい検査する UDF の名前。

出力フィールド

フィールド説明
NameUDF の名前。
OwnerUDF を登録したアカウント。
Created TimeUDF が作成された時間。
ClassUDF のクラスパス。大文字と小文字を区別します。
ResourcesUDF に関連付けられたリソースリスト。

-- my_lower 関数の詳細を表示します。
desc function my_lower;

出力:

Name                                    my_lower
Owner                                   ALIYUN$****
Created Time                            2020-06-18 15:50:19
Class                                   org.alidata.odps.udf.examples.Lower
Resources                               project_name/my_lower.jar

すべての UDF のリスト

MaxCompute プロジェクトに登録されているすべての UDF を返します。

構文

以下のいずれかのコマンドを使用します。

list functions [-p <project_name>];
show functions;

パラメータ

パラメータ必須説明
project_nameいいえクエリする MaxCompute プロジェクトの名前。省略した場合、現在のプロジェクトが使用されます。list functions でのみサポートされます。

list functions;

出力:

Name              Owner                                        Create Time           Class                             Resources
ipv4_ipv6_aton    ALIYUN$****@aliyun.com 2021-11-15 13:42:14   com.aliyun.odps.udf.udfFunction.IpLocation ipv4.txt,ipv6.txt,udf-1.0-SNAPSHOT.jar
Lower_test        ALIYUN$****@aliyun.com 2021-08-25 15:51:22   com.aliyun.odps.udf.example.Lower udf-1.0-SNAPSHOT.jar
my_add            ALIYUN$****@aliyun.com 2021-05-08 11:26:02
my_index          ALIYUN$****@aliyun.com 2021-08-25 12:01:05   com.aliyun.odps.examples.udf.UdfArray udf-1.0-SNAPSHOT.jar
my_sum            ALIYUN$****@aliyun.com 2021-05-08 10:24:58
my_udtf           ALIYUN$****@aliyun.com 2021-02-23 11:37:30   com.aliyun.odps.examples.udf.UDTFResource udf-1.0-SNAPSHOT.jar
numpy             ALIYUN$****@aliyun.com 2020-11-11 14:12:50   numpy.TryImport                   numpy.py,numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.zip
ST_Aggr_ConvexHull ALIYUN$****@aliyun.com 2021-03-18 17:06:29   com.esri.hadoop.hive.ST_Aggr_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Aggr_Intersection ALIYUN$****@aliyun.com 2021-03-18 17:06:29   com.esri.hadoop.hive.ST_Aggr_Intersection esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Aggr_Union     ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_Aggr_Union esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Area           ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_Area      esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsBinary       ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_AsBinary  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsGeoJson      ALIYUN$****@aliyun.com 2021-03-18 17:06:49   com.esri.hadoop.hive.ST_AsGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsJson         ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsJson    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsShape        ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsShape   esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsText         ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsText    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Bin            ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_Bin       esri-geometry-api.jar,spatial-sdk-hive.jar
ST_BinEnvelope    ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_BinEnvelope esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Boundary       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Boundary  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Buffer         ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Buffer    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Centroid       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Centroid  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Contains       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Contains  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_ConvexHull     ALIYUN$****@aliyun.com 2021-03-18 17:07:13   com.esri.hadoop.hive.ST_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar
ST_CoordDim       ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_CoordDim  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Crosses        ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Crosses   esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Difference     ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Difference esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Dimension      ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Dimension esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Disjoint       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_Disjoint  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Distance       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_Distance  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_EndPoint       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_EndPoint  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Envelope       ALIYUN$****@aliyun.com 2021-03-18 17:07:32   com.esri.hadoop.hive.ST_Envelope  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_EnvIntersects  ALIYUN$****@aliyun.com 2021-03-18 17:07:32   com.esri.hadoop.hive.ST_EnvIntersects esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Equals         ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_Equals    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_ExteriorRing   ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_ExteriorRing esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeodesicLengthWGS84 ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_GeodesicLengthWGS84 esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomCollection ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_GeomCollection esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Geometry       ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_Geometry  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeometryN      ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeometryN esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeometryType   ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeometryType esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromGeoJson ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeomFromGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromJson   ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeomFromJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromShape  ALIYUN$****@aliyun.com 2021-03-18 17:07:56   com.esri.hadoop.hive.ST_GeomFromShape esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromText   ALIYUN$****@aliyun.com 2021-03-18 17:08:10   com.esri.hadoop.hive.ST_GeomFromText esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromWKB    ALIYUN$****@aliyun.com 2021-03-18 17:08:10   com.esri.hadoop.hive.ST_GeomFromWKB esri-geometry-api.jar,spatial-sdk-hive.jar

出力列は次のとおりです。

説明
NameUDF の名前。
OwnerUDF を登録したアカウント。
Create TimeUDF が作成された時間。
ClassUDF のクラスパス。クラス情報が利用できない場合は空です。
ResourcesUDF に関連付けられたリソース。リソースが記録されていない場合は空です。

すべてのビルトイン関数のリスト

MaxCompute で利用可能なビルトイン関数に関する情報 (関数シグネチャやサポートされているデータの型を含む) を返します。

説明

このコマンドには、MaxCompute クライアント V0.43.0 以降が必要です。

構文

show builtin functions [<function_name>];

パラメータ

パラメータ必須説明
function_nameいいえ検索する特定のビルトイン関数の名前。省略した場合、すべてのビルトイン関数が返されます。

show builtin functions;

出力 (一部):

ID = 20230307081023424gef2hwowr1
::ABS   SCALAR  DECIMAL(?,?) ABS(DECIMAL(?,?) arg0),DOUBLE ABS(DOUBLE arg0),BIGINT ABS(BIGINT arg0),INT ABS(INT arg0)
::ACOS  SCALAR  DOUBLE ACOS(DOUBLE arg0),DOUBLE ACOS(DECIMAL(?,?) arg0)
::ADD_MONTHS    SCALAR  STRING ADD_MONTHS(DATE arg0, BIGINT arg1),STRING ADD_MONTHS(TIMESTAMP arg0, BIGINT arg1),STRING ADD_MONTHS(STRING arg0, BIGINT arg1)
::ALL_MATCH     SCALAR  BOOLEAN ALL_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1)
::ANY_MATCH     SCALAR  BOOLEAN ANY_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1)
::ANY_VALUE     AGGREGATOR      T ANY_VALUE([DISTINCT] T arg1)
::APPROX_DISTINCT       AGGREGATOR      BIGINT APPROX_DISTINCT([DISTINCT] P arg1, DOUBLE arg2),BIGINT APPROX_DISTINCT([DISTINCT] P arg1)
::ARG_MAX       AGGREGATOR      R ARG_MAX([DISTINCT] T arg1, R arg2)
::ARG_MIN       AGGREGATOR      R ARG_MIN([DISTINCT] T arg1, R arg2)
::ARRAY SCALAR  ARRAY<STRING> ARRAY(),ARRAY<T> ARRAY(T arg0...)
::ARRAYS_OVERLAP        SCALAR  BOOLEAN ARRAYS_OVERLAP(ARRAY<T> arg0, ARRAY<T> arg1)
::ARRAYS_ZIP    SCALAR  null
::ARRAY_CONTAINS        SCALAR  BOOLEAN ARRAY_CONTAINS(ARRAY<T> arg0, T arg1)
::ARRAY_DISTINCT        SCALAR  ARRAY<T> ARRAY_DISTINCT(ARRAY<T> arg0)
::ARRAY_EXCEPT  SCALAR  ARRAY<T> ARRAY_EXCEPT(ARRAY<T> arg0, ARRAY<T> arg1)
::ARRAY_INTERSECT       SCALAR  null
::ARRAY_JOIN    SCALAR  STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1, STRING arg2),STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1)
::ARRAY_MAX     SCALAR  T ARRAY_MAX(ARRAY<T> arg0)
::ARRAY_MIN     SCALAR  T ARRAY_MIN(ARRAY<T> arg0)
::ARRAY_NORMALIZE       SCALAR  ARRAY<FLOAT> ARRAY_NORMALIZE(ARRAY<FLOAT> arg0, FLOAT arg1),ARRAY<DOUBLE> ARRAY_NORMALIZE(ARRAY<DOUBLE> arg0, DOUBLE arg1)
::ARRAY_POSITION        SCALAR  BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1, BIGINT arg2),BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1)
::ARRAY_REDUCE  SCALAR  OUT ARRAY_REDUCE(ARRAY<IN> arg0, BUF arg1, java.util.function.BiFunction<BUF, IN, BUF> arg2, java.util.function.Function<BUF, OUT> arg3)
::ARRAY_REMOVE  SCALAR  ARRAY<T> ARRAY_REMOVE(ARRAY<T> arg0, T arg1)
::ARRAY_REPEAT  SCALAR  ARRAY<T> ARRAY_REPEAT(T arg0, BIGINT arg1)
::ARRAY_SORT    SCALAR  ARRAY<T> ARRAY_SORT(ARRAY<T> arg0, java.util.function.BiFunction<T, T, java.lang.Long> arg1)
::ARRAY_UNION   SCALAR  ARRAY<T> ARRAY_UNION(ARRAY<T> arg0, ARRAY<T> arg1)
::ASCII SCALAR  BIGINT ASCII(STRING arg0)
::ASIN  SCALAR  DOUBLE ASIN(DOUBLE arg0),DOUBLE ASIN(DECIMAL(?,?) arg0)
::ATAN  SCALAR  DOUBLE ATAN(DECIMAL(?,?) arg0),DOUBLE ATAN(DOUBLE arg0)
::ATAN2 SCALAR  DOUBLE ATAN2(DECIMAL(?,?) arg0, DECIMAL(?,?) arg1),DOUBLE ATAN2(DOUBLE arg0, DOUBLE arg1)
::AVG   AGGREGATOR      DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg1),DOUBLE AVG([DISTINCT] DOUBLE arg1)
::AVG   WINDOW  DOUBLE AVG([DISTINCT] DOUBLE arg0),DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg0)
::BASE64        SCALAR  STRING BASE64(BINARY arg0)
::BIN   SCALAR  STRING BIN(BIGINT arg0)
::BITAND        SCALAR  BIGINT BITAND(BIGINT arg0, BIGINT arg1)
::BITNOT        SCALAR  BIGINT BITNOT(BIGINT arg0)
::BITOR SCALAR  BIGINT BITOR(BIGINT arg0, BIGINT arg1)
::BITWISE_AND_AGG       AGGREGATOR      BIGINT BITWISE_AND_AGG([DISTINCT] BIGINT arg1)
::BITWISE_OR_AGG        AGGREGATOR      BIGINT BITWISE_OR_AGG([DISTINCT] BIGINT arg1)
::BITXOR        SCALAR  BIGINT BITXOR(BIGINT arg0, BIGINT arg1)
::BROUND        SCALAR  DOUBLE BROUND(DOUBLE arg0, BIGINT arg1),DOUBLE BROUND(DOUBLE arg0)
......

出力の各行は、function_name function_type signature(s) の形式に従います。関数タイプは、SCALARAGGREGATOR、または WINDOW のいずれかです。