MaxCompute menyediakan berbagai fungsi bawaan untuk pemrosesan data. Topik ini menjelaskan jenis fungsi yang tersedia beserta penggunaannya.
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, dan menghasilkan bilangan acak. | |
Menjalankan operasi dalam kolom window tertentu. Fungsi-fungsi ini memungkinkan Anda menghitung jumlah, mencari nilai maksimum atau minimum, menghitung rata-rata atau median, mengurutkan angka, menggeser nilai, dan melakukan pengambilan sampel. | |
Mengagregasi beberapa catatan input menjadi satu nilai output. Fungsi-fungsi ini memungkinkan Anda menghitung jumlah, rata-rata, nilai maksimum atau minimum, mengagregasi parameter, serta menggabungkan string. | |
Ini adalah fungsi agregat aproksimasi. Untuk volume data besar, fungsi ini menggunakan memori dalam jumlah kecil untuk menghapus duplikat secara cepat dan mempercepat kueri. | |
Memproses data bertipe STRING. Fungsi-fungsi ini memungkinkan Anda memotong, mengganti, atau mencari string, mengubah huruf kapital/kecil, serta mengonversi format string. | |
Memproses data bertipe ARRAY. Fungsi-fungsi ini memungkinkan Anda membuat array, menghapus elemen duplikat, mengagregasi elemen, mengurutkan elemen, dan menggabungkan elemen. | |
Memproses data bertipe MAP. Fungsi-fungsi ini memungkinkan Anda mengekstrak pasangan kunci-nilai, membuat map, dan menggabungkan map. | |
Memproses data bertipe STRUCT. Fungsi-fungsi ini memungkinkan Anda memperluas array STRUCT dan membuat STRUCT. | |
Memproses data bertipe 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 on JSON functions. | |
Memproses data tabel bertipe STRING dan BINARY. Fungsi-fungsi ini memungkinkan Anda mengenkripsi dan mendekripsi data. | |
Memproses data terkait jaringan bertipe STRING dan BINARY. Fungsi-fungsi ini memungkinkan Anda 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 dengan berbagai cara. | |
Fungsi lain juga tersedia untuk berbagai skenario bisnis. |
Untuk informasi tentang pemetaan antara jenis fungsi ini dan fungsi open source, lihat Mapping between MaxCompute, Hive, MySQL, and Oracle built-in functions.
Catatan
Perhatikan hal-hal berikut saat menggunakan fungsi bawaan:
Tipe parameter input, jumlah parameter input, dan format fungsi bawaan harus mengikuti sintaks yang ditentukan. Jika tidak, MaxCompute tidak dapat mengurai fungsi tersebut, sehingga pernyataan SQL gagal.
Jika fungsi bawaan menggunakan tipe data Data Type 2.0 seperti TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, atau BINARY sebagai parameter input, Anda harus mengaktifkan Data Type 2.0. Jika Data Type 2.0 tidak diaktifkan, akan terjadi error. Untuk mengaktifkan Data Type 2.0:
Tingkat sesi: Tambahkan
SET odps.sql.type.system.odps2=true;sebelum pernyataan SQL Anda dan kirimkan bersamaan. Konfigurasi ini hanya berlaku untuk pernyataan SQL tersebut.Tingkat proyek: Pemilik proyek dapat mengatur konfigurasi ini untuk proyek MaxCompute. Konfigurasi akan berlaku dalam 10 hingga 15 menit dan berlaku untuk semua pernyataan SQL berikutnya.
SETPROJECT odps.sql.type.system.odps2=true;
Saat Data Type 2.0 diaktifkan untuk proyek MaxCompute, beberapa konversi tipe implisit dinonaktifkan, termasuk konversi dari STRING ke BIGINT, STRING ke DATETIME, DOUBLE ke BIGINT, DECIMAL ke DOUBLE, dan DECIMAL ke BIGINT. Konversi ini dinonaktifkan karena berisiko kehilangan presisi atau menyebabkan error. Untuk mengatasinya, Anda dapat menggunakan fungsi CAST untuk melakukan konversi eksplisit atau menonaktifkan Data Type 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, MaxCompute secara default akan memanggil UDF tersebut, bukan fungsi bawaan CONCAT. Untuk memanggil fungsi bawaan, tambahkan
::sebelum nama fungsi, contohnya:SELECT ::CONCAT('ab', 'c');.Hasil fungsi bawaan dapat berbeda tergantung pada properti global proyek MaxCompute. Anda dapat menjalankan perintah
SETPROJECT;untuk melihat properti global proyek tersebut.
Limits on JSON functions
Tool pengembangan yang didukung meliputi klien MaxCompute (odpscmd), MaxCompute Studio, dan DataWorks. Ekosistem eksternal seperti Dataphin tidak didukung. Jika Anda perlu menggunakan tipe data JSON yang didukung oleh MaxCompute di ekosistem eksternal, pastikan ekosistem tersebut mendukung tipe data JSON. Tabel berikut menjelaskan hal-hal yang perlu diperhatikan saat menggunakan klien MaxCompute (odpscmd) atau MaxCompute Studio sebagai tool pengembangan untuk data bertipe JSON.
MaxCompute client (odpscmd)
MaxCompute Studio
Anda harus meningkatkan versi klien MaxCompute ke V0.46.5 atau lebih baru. Jika tidak, Anda tidak dapat menjalankan pernyataan
desc json_tableatau mengunduh data bertipe JSON menggunakan Tunnel.Anda harus mengatur parameter
use_instance_tunnelke false. Parameter ini terdapat dalam file odps_config.ini di folder conf pada path instalasi klien. Jika tidak, akan muncul error saat menjalankan kueri.
MaxCompute Studio memungkinkan Anda melakukan kueri data JSON. MaxCompute Studio tidak memungkinkan Anda mengunggah atau mengunduh data JSON.
Jika Anda menggunakan engine lain, seperti Hologres, untuk membaca data dari tabel MaxCompute, data JSON dalam tabel tersebut tidak dapat dibaca.
Kolom bertipe JSON tidak dapat ditambahkan ke tabel MaxCompute.
Anda tidak diperbolehkan membandingkan data bertipe JSON dengan data bertipe lain, menjalankan pernyataan SQL yang mengandung klausa
ORDER BYatauGROUP BYpada data bertipe JSON, atau menggunakan kolom bertipe JSON sebagai kuncijoin.Untuk data bertipe JSON NUMBER, bagian integer disimpan menggunakan tipe BIGINT dan bagian desimal disimpan menggunakan tipe DOUBLE. Jika bagian integer melebihi rentang yang didukung oleh tipe BIGINT, akan terjadi integer overflow. Selain itu, saat bagian desimal dikonversi ke tipe DOUBLE, terjadi kehilangan presisi.
String yang digunakan untuk menghasilkan data JSON tidak boleh mengandung
\u0000, yaitu karakter null dalam Unicode.UDF Java dan UDF Python tidak mendukung tipe data JSON.
Tabel clustered tidak dapat menyimpan data JSON.
SDK Java versi sebelum V0.44.0 dan PyODPS versi sebelum V0.11.4.1 tidak mendukung tipe data JSON.
Tabel delta tidak mendukung tipe data JSON.
Tipe data JSON dapat digunakan secara bersarang, dengan dukungan hingga 20 tingkat nesting.
Limits on 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 dalam edisi tipe data kompatibel 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.