All Products
Search
Document Center

MaxCompute:Ikhtisar UDAF

Last Updated:Mar 26, 2026

Fungsi agregat yang didefinisikan pengguna (UDAF) memetakan beberapa record input ke satu nilai output. Gunakan UDAF jika tidak tersedia fungsi agregat bawaan yang sesuai dengan logika agregasi Anda. MaxCompute mendukung UDAF yang ditulis dalam Java atau Python.

Kapan menggunakan UDAF

Fungsi bawaan telah dioptimalkan untuk pemrosesan terdistribusi dan menawarkan kinerja lebih baik dibandingkan UDAF. Gunakan fungsi bawaan bila tersedia untuk kasus penggunaan Anda.

Buat UDAF ketika logika agregasi Anda tidak dapat diekspresikan menggunakan fungsi bawaan—misalnya, model statistik kustom, skoring berbasis domain, atau agregasi berbobot multi-field.

Jenis UDAF

TypeLanguageRuntime
Java UDAFJavaJVM
Python 2 UDAFPythonPython 2.7
Python 3 UDAFPythonCPython 3.7.3

Untuk detail implementasi, lihat Java UDAFs, Python 2 UDAF, dan Python 3 UDAF.

Proses pengembangan

Java UDAF

Gambar berikut menunjukkan alur kerja pengembangan Java UDAF.

Write a UDF in Java
StepRequiredDescriptionPlatformReferences
1NoTambahkan dependensi SDK odps-sdk-udf ke file POM Anda. Contoh: <dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-udf</artifactId><version>0.29.10-public</version></dependency>. Cari versi terbaru di repositori Maven.IntelliJ IDEA (Maven)
2YesTulis UDAF.IntelliJ IDEA (Maven) dan MaxCompute StudioDevelop a UDF in Java
3YesDebug UDAF di mesin lokal Anda atau dengan pengujian unit.
4YesBundel kode menjadi file JAR.
5YesUnggah file JAR sebagai resource ke Proyek MaxCompute Anda.MaxCompute client (odpscmd), MaxCompute Studio, DataWorksMaxCompute client: Add resources, Create a UDF; MaxCompute Studio: Package a Java program, upload the package, and create a MaxCompute UDF; DataWorks: Create and use MaxCompute resources, Create and use a MaxCompute function
6YesBuat UDF berdasarkan file JAR yang diunggah.
7NoPanggil UDAF dalam kueri.

Python UDAF

Gambar berikut menunjukkan alur kerja pengembangan Python UDAF.

Write a UDF in Python
StepRequiredDescriptionPlatformReferences
1YesTulis UDAF.MaxCompute StudioDevelop a Python UDF
2YesDebug UDAF di mesin lokal Anda atau dengan pengujian unit.
3YesUnggah file Python dan resource yang diperlukan (file resources, table resources, paket pihak ketiga) ke Proyek MaxCompute Anda.MaxCompute client (odpscmd), MaxCompute Studio, DataWorksMaxCompute client: Add resources, Create a UDF; MaxCompute Studio: Upload a Python program and create a MaxCompute UDF; DataWorks: Use resources to register functions
4YesBuat UDF berdasarkan file Python atau resource yang diunggah.
5NoPanggil UDAF dalam kueri.

Batasan

UDAF tidak dapat mengakses Internet. Untuk mengaktifkan akses Internet, ajukan permohonan koneksi jaringan. Setelah disetujui, tim dukungan teknis MaxCompute akan membantu Anda menyiapkan koneksi tersebut. Untuk detailnya, lihat Network connection process.

Catatan penggunaan

  • Kinerja: Fungsi bawaan memiliki kinerja lebih baik daripada UDAF. Gunakan fungsi bawaan bila tersedia untuk kasus penggunaan Anda.

  • Memori: Jika pernyataan SQL yang menggunakan UDAF melebihi alokasi memori default karena volume data besar atau kesenjangan data, jalankan perintah berikut pada tingkat session untuk menaikkan batas:

    set odps.sql.udf.joiner.jvm.memory=xxxx;

    Untuk informasi lebih lanjut, lihat FAQ about MaxCompute UDFs.

  • Tumbukan nama: Jika UDAF memiliki nama yang sama dengan fungsi bawaan, MaxCompute akan memanggil UDAF tersebut. Untuk memanggil fungsi bawaan, tambahkan awalan ::, contohnya: select ::concat('ab', 'c');

Memanggil UDAF

Dalam proyek yang sama: Panggil UDAF dengan cara yang sama seperti memanggil fungsi bawaan.

Antar proyek: Gunakan nama proyek sebagai awalan. Contoh berikut memanggil udf_in_other_project dari Proyek B di dalam Proyek A:

select B:udf_in_other_project(arg0, arg1) as res from table_t;

Untuk pengaturan berbagi sumber daya antar proyek, lihat Cross-project resource access based on packages.