MaxCompute menyediakan berbagai fungsi bawaan yang memenuhi sebagian besar kebutuhan pemrosesan data. Topik ini menjelaskan jenis-jenis fungsi bawaan dan cara menggunakannya.
Jenis fungsi
Function type | Description |
Memproses tipe data tanggal dan waktu, seperti DATE, DATETIME, dan TIMESTAMP. Fungsi-fungsi ini memungkinkan Anda menambah atau mengurangi tanggal, menghitung selisih tanggal, mengekstrak bagian tanggal, mendapatkan waktu saat ini, serta mengonversi format tanggal. | |
Memproses tipe data numerik, seperti BIGINT, DOUBLE, DECIMAL, dan FLOAT. Fungsi-fungsi ini memungkinkan Anda mengonversi basis bilangan, melakukan operasi matematika, membulatkan angka, serta mendapatkan bilangan acak. | |
Menjalankan operasi dalam kolom window tertentu. Fungsi-fungsi ini memungkinkan Anda menghitung jumlah, mencari nilai maksimum dan minimum, menghitung rata-rata dan median, mengurutkan angka, menggeser nilai (offset), serta melakukan pengambilan sampel. | |
Mengagregasi beberapa input record menjadi satu nilai output. Fungsi-fungsi ini memungkinkan Anda menghitung jumlah, rata-rata, nilai maksimum dan minimum, mengagregasi parameter, serta menggabungkan string. | |
Ini adalah fungsi agregat perkiraan. Saat volume data sangat besar, fungsi HyperLogLog++ dapat menghapus duplikat secara cepat dan mempercepat kueri dengan menggunakan memori dalam jumlah kecil. | |
Memproses data STRING. Fungsi-fungsi ini memungkinkan Anda memotong, mengganti, dan mencari string, mengubah huruf kapital/kecil, serta mengonversi format string. Untuk batasan fungsi string, lihat Limits of string functions. | |
Memproses data ARRAY. Fungsi-fungsi ini memungkinkan Anda membuat array, menghapus elemen duplikat, mengagregasi elemen, mengurutkan elemen, serta menggabungkan elemen. | |
Memproses data MAP. Fungsi-fungsi ini memungkinkan Anda mengekstrak pasangan kunci-nilai, membuat map, serta menggabungkan map. | |
Memproses data STRUCT. Fungsi-fungsi ini memungkinkan Anda memperluas array STRUCT dan membuat struct. | |
Memproses data JSON. Fungsi-fungsi ini memungkinkan Anda mengekstrak nilai bidang JSON, membuat objek atau array JSON, menyisipkan atau memperbarui data JSON, serta menangani struktur data kompleks. Untuk batasan fungsi JSON, lihat Limits of JSON functions. | |
Memproses data tabel STRING dan BINARY. Fungsi-fungsi ini memungkinkan Anda mengenkripsi dan mendekripsi data. | |
Memproses data STRING dan BINARY yang terkait jaringan. Fungsi-fungsi ini memungkinkan Anda mengonversi format alamat IP, mengurai URL, serta mendapatkan masker jaringan. | |
Menghubungkan ke data tidak terstruktur dan metadata-nya yang disimpan di gudang data atau data lake melalui berbagai cara. | |
MaxCompute juga menyediakan fungsi lain untuk berbagai skenario bisnis. |
Untuk informasi lebih lanjut mengenai pemetaan antara fungsi MaxCompute dan fungsi open source, lihat Mapping between built-in functions of MaxCompute, Hive, MySQL, and Oracle.
Catatan
Perhatikan hal-hal berikut saat menggunakan fungsi bawaan:
Tipe, jumlah, dan format parameter input untuk fungsi bawaan harus sesuai dengan sintaks yang ditentukan. Jika tidak, MaxCompute tidak dapat mengurai fungsi tersebut, dan pernyataan SQL gagal dieksekusi.
Jika parameter input fungsi bawaan menggunakan tipe data 2.0, seperti TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, atau BINARY, Anda harus mengaktifkan tipe data 2.0. Jika tidak, akan muncul error. Untuk mengaktifkan tipe data 2.0:
Tingkat sesi: Tambahkan
SET odps.sql.type.system.odps2=true;sebelum pernyataan SQL dan kirimkan bersama-sama. Konfigurasi ini hanya berlaku untuk pernyataan SQL saat ini.Tingkat proyek: Pemilik proyek dapat mengaktifkan pengaturan ini untuk seluruh proyek. Konfigurasi akan berlaku dalam 10 hingga 15 menit dan diterapkan pada semua pernyataan SQL berikutnya.
SETPROJECT odps.sql.type.system.odps2=true;
Ketika tipe data 2.0 diaktifkan untuk proyek MaxCompute, beberapa konversi tipe implisit dinonaktifkan untuk mencegah potensi kehilangan presisi atau error. Konversi yang dinonaktifkan tersebut meliputi STRING ke BIGINT, STRING ke DATETIME, DOUBLE ke BIGINT, DECIMAL ke DOUBLE, dan DECIMAL ke BIGINT. Untuk mengatasi masalah ini, gunakan fungsi CAST untuk melakukan konversi eksplisit, atau nonaktifkan tipe data 2.0.
Jika user-defined function (UDF) memiliki nama yang sama dengan fungsi bawaan, UDF tersebut akan menimpa fungsi bawaan. Misalnya, jika terdapat UDF bernama CONCAT di proyek MaxCompute, sistem akan memanggil UDF tersebut secara default, bukan fungsi CONCAT bawaan. Untuk memanggil fungsi bawaan, tambahkan
::sebelum nama fungsi. Contohnya:SELECT ::CONCAT('ab', 'c');.Hasil dari fungsi bawaan dapat berbeda tergantung pada properti global yang dikonfigurasi untuk proyek MaxCompute. Anda dapat menjalankan perintah
SETPROJECT;untuk melihat properti global proyek tersebut.
Limits of JSON functions
SDK version requirements
Hanya Java SDK V0.44.0 dan versi yang lebih baru yang didukung.
Hanya PyODPS V0.11.4.1 dan versi yang lebih baru yang didukung.
Table operation limits
Anda tidak dapat menambahkan kolom JSON ke tabel.
Tabel clustered tidak didukung.
Tabel tipe Delta Table tidak didukung.
SQL operation limits
Operasi perbandingan pada tipe JSON tidak didukung.
Anda tidak dapat menggunakan klausa
ORDER BYatauGROUP BYpada tipe JSON. Anda juga tidak dapat menggunakan kolom tipe JSON sebagai kunciJOIN.
Data precision
Bagian integer dari JSON NUMBER disimpan sebagai tipe BIGINT. Terjadi overflow jika integer tersebut berada di luar rentang BIGINT.
Bagian desimal dari JSON NUMBER disimpan sebagai tipe DOUBLE. Kehilangan presisi dapat terjadi saat bagian desimal dikonversi ke tipe DOUBLE.
Character limits: Karakter Unicode
\u0000tidak didukung dalam string yang digunakan untuk menghasilkan data JSON.Engine compatibility: Jika Anda menggunakan engine lain, seperti Hologres, untuk membaca data dari tabel, tipe data JSON tidak dapat dibaca.
Java UDF dan Python UDF tidak mendukung tipe JSON.
Tipe data JSON dapat disusun bersarang hingga kedalaman 20 level.
Development tools
Alat pengembangan yang didukung meliputi klien MaxCompute (odpscmd), MaxCompute Studio, dan DataWorks. Ekosistem eksternal seperti Dataphin tidak didukung. Jika Anda ingin menggunakan tipe data JSON dengan sistem eksternal, Anda harus memastikan kompatibilitasnya terlebih dahulu. Saat menggunakan klien odpscmd, perhatikan hal-hal berikut:
Anda harus melakukan upgrade klien ke V0.46.5 atau versi yang lebih baru. Jika tidak, Anda tidak dapat menjalankan perintah
DESC json_tableatau mengunduh data JSON menggunakan Tunnel.Pada file
conf\odps_config.inidi path instalasi klien, atur parameteruse_instance_tunnelkefalse. Jika tidak, kueri akan gagal.
Limits of string functions
Fungsi-fungsi berikut hanya mendukung karakter bahasa Inggris:
TRIM, RTRIM, dan LTRIM: Nilai parameter trimChars hanya boleh berisi karakter bahasa Inggris.
REVERSE: Fungsi ini hanya mendukung karakter bahasa Inggris pada edisi tipe data yang kompatibel dengan Hive.
SOUNDEX: Fungsi ini hanya mendukung karakter bahasa Inggris.
TOLOWER: Fungsi ini digunakan untuk mengonversi karakter bahasa Inggris dalam string menjadi huruf kecil.
TOUPPER: Fungsi ini digunakan untuk mengonversi karakter bahasa Inggris dalam string menjadi huruf kapital.
INITCAP: Fungsi ini digunakan untuk mengonversi huruf pertama setiap kata dalam bahasa Inggris dalam string menjadi huruf kapital, dan huruf lainnya dalam setiap kata menjadi huruf kecil.