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

MaxCompute:関数の操作

最終更新日:Dec 10, 2024

MaxComputeの組み込み関数またはユーザー定義関数 (UDF) をデータコンピューティングに使用できます。 組み込み関数は直接呼び出すことができます。 UDFはカスタマイズ後にのみ呼び出すことができます。 このトピックでは、関数の作成、削除、表示など、関数に対する一般的な操作について説明します。

関数の一般的な操作を次の表に示します。

API 操作

説明

Performed by

操作プラットフォーム

UDFの作成

MaxComputeプロジェクトにUDFを作成します。

関数の書き込み権限を持つユーザー

このトピックで説明するステートメントは、次のプラットフォームで実行できます。

UDFの削除

MaxComputeプロジェクトから既存のUDFを削除します。

関数の削除権限を持つユーザー

UDFの表示

MaxComputeプロジェクト内の指定されたUDFの情報を表示します。

関数の読み取り権限を持つユーザー

UDFリストの表示

MaxComputeプロジェクト内のすべてのUDFを表示します。

プロジェクト内のオブジェクトに対するList権限を持つユーザー

すべての組み込み関数を表示

MaxComputeプロジェクトのすべての組み込み関数の情報を表示します。

プロジェクト内のオブジェクトに対するList権限を持つユーザー

UDF の作成

MaxComputeプロジェクトにUDFを作成します。

  • 制限事項

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

    • UDFはMaxComputeの組み込み関数を上書きできません。 プロジェクト所有者のみがUDFを使用して組み込み関数を上書きできます。 組み込み関数を上書きするUDFを使用すると、SQL文の実行後、ジョブのLogviewの [サマリー] に警告情報が表示されます。

  • 構文

    create function <function_name> as <'package_to_class'> using <'resource_list'>;
  • パラメーター

    • function_name: 必須です。 作成するUDFの名前。

    • package_to_class: 必須です。 UDFのクラス。 このパラメーターは大文字と小文字を区別し、単一引用符 (') で囲む必要があります。

      • Java UDFの場合、この名前を、最上位パッケージ名からUDFクラス名までの完全修飾クラス名として指定します。

      • Python UDFの場合、この名前をPythonスクリプトname.Class name形式で指定します。

        説明

        Pythonスクリプト名は、リソースを一意に識別する基になるリソース名を指します。 MaxComputeのリソース名は大文字と小文字を区別しません。 たとえば、リソースを最初にアップロードしたときのリソース名はpyudf_test.pyです。 DataStudioでリソースの名前をPYUDF_TEST.pyに変更した場合、またはPYUDF_TEST.pyを使用してMaxComputeクライアントでpyudf_test.pyを上書きした場合、リソースを一意に識別する基になるリソース名はpyudf_test.pyのままです。 この場合、リソースに基づいてUDFを作成する場合、クラス名はpyudf_testS.ampleUDFでなければなりません。 list resources; コマンドを実行して、すべてのリソースを一意に識別する基になるリソース名を表示できます。

    • resource_list: 必須です。 UDFによって使用されるリソースのリスト。

      • リソースリストには、UDFコードを含むリソースを含める必要があります。 リソースがMaxComputeにアップロードされていることを確認します。

      • コードが分散キャッシュAPIを呼び出してリソースファイルを読み取る場合、このリソースリストには、UDFによって読み取られるリソースファイルのリストも含まれている必要があります。

      • リソースリストは複数のリソース名で構成され、単一引用符 (') で囲む必要があります。 リソース名はコンマ (,) で区切ります。

      • リソースを含むプロジェクトを指定するには、<project_name>/resources/<resource_name> 形式でパラメーターを記述します。

    • 例1: my_lower関数を作成します。 この例では、Java UDFクラスorg.alidata.odps.udf.examples.Lowermy_lower.jarにあります。

      create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';
    • 例2: my_lower関数を作成します。 この例では、Python UDFクラスMyLowerは、test_projectプロジェクトのpyudf_test.pyスクリプトにあります。

      create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
    • 例3: test_udtf関数を作成します。 この例では、Java UDFクラスcom.aliyun.odps.examples.udf.UDTFResourceudtfexample1.jarにあります。 この関数は、ファイルリソースfile_resource.txt、テーブルリソースtable_resource1、およびアーカイブリソースtest_archive.zipに依存します。

      create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';

UDFの削除

MaxComputeプロジェクトから既存のUDFを削除します。

  • 構文

    drop function <function_name>;
  • パラメーター

    function_name: 必須です。 既存のUDFの名前。

  • 例:

    -- Delete the my_lower function. 
    drop function my_lower;

UDFの表示

MaxComputeプロジェクト内の指定されたUDFの情報を表示します。 情報には、UDFの名前、所有者、作成時刻、クラス名、およびリソースリストが含まれます。

  • 構文

    desc function <function_name>;
  • パラメーター

    function_name: 必須です。 既存の関数の名前。

  • 戻り値

    • Name: UDFの名前。

    • Owner: UDFを所有するアカウント。

    • Created Time: UDFが作成された時刻。

    • Class: 大文字と小文字を区別するUDFのクラス。

    • Resources: UDFによって使用されるリソースのリスト。

  • -- View the information of the my_lower function. 
    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を表示します。

  • 構文次のいずれかの構文を使用して、MaxComputeプロジェクト内のすべてのUDFを表示できます。

    • list functions [-p <project_name>];
    • show functions;
  • パラメーター

    project_name: オプションです。 MaxComputeプロジェクトの名前。

  • 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

すべての組み込み関数を表示

MaxComputeプロジェクトのすべての組み込み関数の情報を表示します。

  • 構文

    show builtin functions [<function_name>];
  • パラメーター

    function_name: オプションです。 MaxComputeプロジェクトで指定された組み込み関数の名前。

  • 例:

    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)
    ......
説明

show builtin functions; コマンドは、V0.43.0以降のMaxComputeクライアントでのみ実行できます。