全部产品
Search
文档中心

MaxCompute:Operasi Fungsi

更新时间:Jul 02, 2025

Anda dapat menggunakan fungsi bawaan atau fungsi yang ditentukan pengguna (UDF) dari MaxCompute untuk komputasi data. Fungsi bawaan dapat dipanggil secara langsung, sedangkan UDF hanya dapat digunakan setelah disesuaikan. Bagian ini menjelaskan operasi umum terkait fungsi, seperti pembuatan, penghapusan, dan peninjauan fungsi.

Tabel berikut merangkum operasi umum pada fungsi.

Operasi

Deskripsi

Dilakukan oleh

Platform Operasi

Buat UDF

Membuat UDF di proyek MaxCompute.

Pengguna dengan izin Write pada fungsi.

Operasi ini dapat dieksekusi pada platform berikut:

Hapus UDF

Menghapus UDF yang ada dari proyek MaxCompute.

Pengguna dengan izin Delete pada fungsi.

Lihat UDF

Menampilkan informasi UDF tertentu di proyek MaxCompute.

Pengguna dengan izin Read pada fungsi.

Lihat Daftar UDF

Menampilkan semua UDF di proyek MaxCompute.

Pengguna dengan izin List pada objek di proyek.

Lihat Semua Fungsi Bawaan

Menampilkan informasi semua fungsi bawaan di proyek MaxCompute.

Pengguna dengan izin List pada objek di proyek.

Buat UDF

Membuat UDF di proyek MaxCompute.

  • Batasan

    • Nama fungsi harus unik dalam satu proyek. Anda tidak dapat membuat fungsi dengan nama yang sama dengan fungsi yang sudah ada di proyek tersebut.

    • UDF tidak dapat menimpa fungsi bawaan MaxCompute. Hanya pemilik proyek yang dapat menggunakan UDF untuk menimpa fungsi bawaan. Jika Anda menggunakan UDF yang menimpa fungsi bawaan, peringatan akan ditampilkan di Ringkasan Logview pekerjaan Anda setelah pernyataan SQL dieksekusi.

  • Sintaksis

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

    • function_name: wajib. Nama UDF yang ingin dibuat.

    • package_to_class: wajib. Kelas dari UDF. Parameter ini bersifat case-sensitive dan harus diapit tanda kutip tunggal (').

      • Untuk UDF Java, tentukan nama ini sebagai nama kelas lengkap dari nama paket tingkat atas hingga nama kelas UDF.

      • Untuk UDF Python, tentukan nama ini dalam format Nama skrip Python.Nama kelas.

        Catatan

        Nama skrip Python mengacu pada nama sumber daya dasar yang secara unik mengidentifikasi suatu sumber daya. Nama sumber daya MaxCompute tidak bersifat case-sensitive. Misalnya, jika nama sumber daya adalah pyudf_test.py saat pertama kali Anda mengunggah sumber daya, kemudian Anda mengubah namanya menjadi PYUDF_TEST.py di DataStudio atau menggunakan PYUDF_TEST.py untuk menimpa pyudf_test.py di klien MaxCompute, nama sumber daya dasar tetap pyudf_test.py. Dalam hal ini, saat membuat UDF berdasarkan sumber daya, nama kelas harus berupa pyudf_test.SampleUDF. Anda dapat menjalankan perintah list resources; untuk melihat nama sumber daya dasar yang secara unik mengidentifikasi semua sumber daya.

    • resource_list: wajib. Daftar sumber daya yang digunakan oleh UDF.

      • Daftar sumber daya harus mencakup sumber daya yang berisi kode UDF. Pastikan bahwa sumber daya telah diunggah ke MaxCompute.

      • Jika kode memanggil API Distributed Cache untuk membaca file sumber daya, daftar sumber daya ini juga harus mencakup daftar file sumber daya yang dibaca oleh UDF.

      • Daftar sumber daya terdiri dari beberapa nama sumber daya dan harus diapit tanda kutip tunggal ('). Nama sumber daya dipisahkan dengan koma (,).

      • Untuk menentukan proyek yang berisi sumber daya, tulis parameter dalam format <project_name>/resources/<resource_name>.

  • Contoh

    • Contoh 1: Buat fungsi my_lower. Dalam contoh ini, kelas UDF Java org.alidata.odps.udf.examples.Lower berada di my_lower.jar.

      create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';
    • Contoh 2: Buat fungsi my_lower. Dalam contoh ini, kelas UDF Python MyLower berada di skrip pyudf_test.py dari proyek test_project.

      create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
    • Contoh 3: Buat fungsi test_udtf. Dalam contoh ini, kelas UDF Java com.aliyun.odps.examples.udf.UDTFResource berada di udtfexample1.jar. Fungsi ini bergantung pada file sumber daya file_resource.txt, sumber daya tabel table_resource1, dan sumber daya arsip 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';

Hapus UDF

Menghapus UDF yang ada dari proyek MaxCompute.

  • Sintaksis

    drop function <function_name>;
  • Parameter

    function_name: wajib. Nama UDF yang ada.

  • Contoh

    -- Hapus fungsi my_lower.
    drop function my_lower;

Lihat UDF

Menampilkan informasi UDF tertentu di proyek MaxCompute. Informasi tersebut mencakup nama, pemilik, waktu pembuatan, nama kelas, dan daftar sumber daya UDF.

  • Sintaksis

    desc function <function_name>;
  • Parameter

    function_name: wajib. Nama fungsi yang ada.

  • Nilai Kembali

    • Name: nama UDF.

    • Owner: akun yang memiliki UDF.

    • Created Time: waktu ketika UDF dibuat.

    • Class: kelas UDF, yang bersifat case-sensitive.

    • Resources: daftar sumber daya yang digunakan oleh UDF.

  • Contoh

    -- Lihat informasi fungsi my_lower.
    desc function my_lower;

    Hasil berikut dikembalikan:

    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

Lihat daftar UDF

Menampilkan semua UDF di proyek MaxCompute.

  • Sintaksis Anda dapat menggunakan salah satu sintaksis berikut untuk melihat semua UDF di proyek MaxCompute:

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

    project_name: opsional. Nama proyek MaxCompute.

  • Contoh

    list functions;

    Hasil berikut dikembalikan:

    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

Lihat semua fungsi bawaan

Menampilkan informasi semua fungsi bawaan di proyek MaxCompute.

  • Sintaksis

    show builtin functions [<function_name>];
  • Parameter

    function_name: opsional. Nama fungsi bawaan tertentu di proyek MaxCompute.

  • Contoh

    show builtin functions;

    Hasil berikut dikembalikan:

    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)
    ......
Catatan

Anda dapat menjalankan perintah show builtin functions; di klien MaxCompute versi V0.43.0 atau yang lebih baru.