MaxCompute menyediakan berbagai fungsi bawaan yang mencakup sebagian besar kebutuhan pemrosesan data. Halaman ini menjelaskan jenis fungsi yang tersedia serta catatan penggunaan yang berlaku untuk semua fungsi bawaan.
Jenis fungsi
Fungsi bawaan MaxCompute terbagi menjadi tiga kategori utama:
Scalar functions — beroperasi pada satu baris dan mengembalikan satu nilai per pemanggilan. Termasuk fungsi tanggal dan waktu, matematika, string, enkripsi, jaringan, ARRAY, MAP, STRUCT, JSON, serta pemrosesan data tidak terstruktur.
Aggregate functions — menerima beberapa baris input dan mengembalikan satu nilai output.
Window functions — beroperasi pada subset baris dalam kolom window yang telah ditentukan dan mengembalikan satu nilai per baris.
Untuk pemetaan antara fungsi bawaan MaxCompute dan fungsi open source yang setara, lihat Pemetaan antara fungsi bawaan MaxCompute, Hive, MySQL, dan Oracle.
Jenis fungsi | Deskripsi |
Memanipulasi data DATE, DATETIME, dan TIMESTAMP — menambah atau mengurangi tanggal, menghitung selisih, mengekstrak bidang, dan mengonversi format. | |
Menjalankan operasi numerik pada data BIGINT, DOUBLE, DECIMAL, dan FLOAT — mengonversi basis, membulatkan angka, dan menghasilkan nilai acak. | |
Menghitung agregasi, peringkat, offset, dan sampel dalam kolom window yang telah ditentukan. | |
Mengagregasi beberapa catatan input menjadi satu nilai output — jumlah, rata-rata, min/maks, parameter agregat, dan penggabungan string. | |
Fungsi agregat aproksimasi yang menghapus duplikat dan mempercepat kueri pada dataset besar dengan penggunaan memori minimal. | |
Memanipulasi data STRING — memotong, mengganti, mencari, mengubah kapitalisasi, dan mengonversi format. Lihat Batasan fungsi STRING. | |
Memanipulasi data ARRAY — membuat, menghapus duplikat, mengagregasi, mengurutkan, dan menggabungkan array. | |
Memanipulasi data MAP — mengekstrak pasangan kunci-nilai, membuat map, dan menggabungkan map. | |
Memanipulasi data STRUCT — memperluas array STRUCT dan membuat struct. | |
Memanipulasi data JSON — mengekstrak nilai bidang, menghasilkan objek atau array, menyisipkan atau memperbarui data, serta menangani struktur data kompleks. Lihat Batasan fungsi JSON. | |
Mengenkripsi dan mendekripsi data tabel STRING dan BINARY. | |
Memproses data STRING dan BINARY yang terkait jaringan — mengonversi format alamat IP, mengurai URL, dan mendapatkan masker jaringan. | |
Menghubungkan ke data tidak terstruktur dan metadata-nya yang disimpan di gudang data atau data lake melalui berbagai cara. | |
Digunakan untuk membuat, mentransformasi, dan menganalisis data geospasial bertipe GEOGRAPHY. Fungsi-fungsi ini memungkinkan Anda membuat objek geografis seperti titik, garis, dan poligon dari koordinat lintang/bujur atau teks WKT/WKB, mengekstrak properti seperti koordinat dan kotak pembatas, menentukan hubungan spasial antar objek geografis seperti ketercakupan, irisan, dan cakupan, serta menghitung jarak antar objek geografis. | |
Fungsi tambahan untuk berbagai skenario bisnis. | |
Mendukung pemrosesan tipe data VECTOR untuk melakukan komputasi jarak vektor dan pencarian vektor, serta dapat diterapkan pada skenario aplikasi seperti pencarian semantik, peningkatan model bahasa besar (LLM), dan AI generatif. |
Catatan penggunaan
Perhatikan hal-hal berikut saat menggunakan fungsi bawaan:
Parameter input: Tipe, jumlah, dan format parameter input harus sesuai dengan sintaks yang ditentukan. Jika tidak, MaxCompute tidak dapat mengurai fungsi tersebut dan pernyataan SQL akan gagal.
Tipe data 2.0: Jika fungsi bawaan menggunakan tipe data 2.0 — TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, atau BINARY — aktifkan tipe data 2.0 sebelum menjalankan fungsi. Jika tidak, sistem akan melaporkan error. Aktifkan tipe data 2.0 pada salah satu tingkat berikut:
Tingkat sesi (berlaku hanya untuk pernyataan SQL saat ini): Tambahkan pernyataan berikut sebelum pernyataan SQL Anda dan kirimkan bersamaan.
SET odps.sql.type.system.odps2=true;Tingkat proyek (berlaku untuk semua pernyataan SQL berikutnya, efektif dalam 10 hingga 15 menit): Pemilik proyek menjalankan perintah berikut.
SETPROJECT odps.sql.type.system.odps2=true;
Konversi tipe implisit yang dinonaktifkan: Saat tipe data 2.0 diaktifkan, konversi tipe implisit berikut dinonaktifkan untuk mencegah kehilangan presisi atau error: STRING ke BIGINT, STRING ke DATETIME, DOUBLE ke BIGINT, DECIMAL ke DOUBLE, dan DECIMAL ke BIGINT. Gunakan fungsi CAST untuk konversi eksplisit, atau nonaktifkan tipe data 2.0.
Konflik nama UDF dan fungsi bawaan: Jika fungsi yang ditentukan pengguna (UDF) memiliki nama yang sama dengan fungsi bawaan, UDF akan didahulukan. Misalnya, jika terdapat UDF bernama CONCAT dalam suatu proyek, sistem akan memanggil UDF tersebut alih-alih fungsi CONCAT bawaan. Untuk memanggil fungsi bawaan, tambahkan awalan
::pada nama fungsi:SELECT ::CONCAT('ab', 'c');Properti global: Hasil fungsi bawaan dapat berbeda tergantung pada properti global yang dikonfigurasi untuk proyek MaxCompute. Jalankan
SETPROJECT;untuk melihat properti global saat ini.
Batasan fungsi JSON
Persyaratan versi SDK
Java SDK V0.44.0 atau yang lebih baru
PyODPS V0.11.4.1 atau yang lebih baru
Batasan operasi tabel
Menambahkan kolom JSON ke tabel tidak didukung.
Tabel terklaster tidak didukung.
Tabel bertipe Delta Table tidak didukung.
Batasan operasi SQL
Operasi perbandingan pada tipe JSON tidak didukung.
Klausa
ORDER BYdanGROUP BYtidak dapat digunakan pada tipe JSON.Kolom bertipe JSON tidak dapat digunakan sebagai kunci
JOIN.
Presisi data
Bagian bilangan bulat dari NUMBER JSON disimpan sebagai BIGINT. Terjadi overflow jika nilainya berada di luar rentang BIGINT.
Bagian desimal dari NUMBER JSON disimpan sebagai DOUBLE. Kehilangan presisi dapat terjadi selama konversi.
Batasan karakter
Karakter Unicode \u0000 tidak didukung dalam string yang digunakan untuk menghasilkan data JSON.
Kompatibilitas mesin
Mesin lain — misalnya, Hologres — tidak dapat membaca tipe data JSON dari tabel MaxCompute.
Dukungan UDF
UDF Java dan UDF Python tidak mendukung tipe JSON.
Kedalaman bersarang
Tipe data JSON dapat disarangkan hingga kedalaman 20 level.
Alat pengembangan yang didukung
Alat yang didukung meliputi klien MaxCompute (odpscmd), MaxCompute Studio, dan DataWorks. Ekosistem eksternal seperti Dataphin tidak didukung. Pastikan kompatibilitas sebelum menggunakan tipe data JSON dengan sistem eksternal apa pun.
Saat menggunakan odpscmd, perhatikan hal berikut:
Perbarui klien ke V0.46.5 atau yang lebih baru. Versi sebelumnya tidak dapat menjalankan perintah
DESC json_tableatau mengunduh data JSON menggunakan Tunnel.Dalam file
conf\odps_config.inidi jalur instalasi klien, aturuse_instance_tunnelkefalse. Jika tidak, kueri akan gagal.
Batasan fungsi STRING
Fungsi string berikut hanya mendukung karakter Inggris:
TRIM / RTRIM / LTRIM: Parameter
trimCharshanya mendukung karakter Inggris.REVERSE: Hanya mendukung karakter Inggris dalam mode Hive.
SOUNDEX: Hanya mengonversi karakter Inggris.
TOLOWER: Mengonversi huruf kapital Inggris menjadi huruf kecil.
TOUPPER: Mengonversi huruf kecil Inggris menjadi huruf kapital.
INITCAP: Mengonversi huruf pertama setiap kata dalam bahasa Inggris menjadi kapital dan sisanya menjadi huruf kecil.