Topik ini menjelaskan fungsi matematika yang didukung oleh MaxCompute. Ini mencakup sintaksis, deskripsi parameter, serta contoh penggunaan untuk setiap fungsi. Fungsi-fungsi ini memungkinkan Anda melakukan berbagai operasi seperti komputasi data dan konversi data.
Tabel berikut mencantumkan fungsi matematika yang didukung oleh MaxCompute SQL.
Fungsi | Fitur |
Menghitung nilai absolut. | |
Menghitung arccosinus. | |
Menghitung arctangen dari expr1/expr2. | |
Menghitung arcsinus. | |
Menghitung arctangen. | |
Menghitung nilai biner. | |
Menghitung jumlah angka 1 dalam representasi biner dari parameter tertentu | |
Menghitung akar pangkat tiga. | |
Membulatkan nilai ke atas. | |
Mengonversi angka dari satu basis ke basis lainnya. | |
Menghitung koefisien korelasi Pearson. | |
Menghitung kosinus. | |
Menghitung kosinus hiperbolik. | |
Menghitung kotangen. | |
Mengonversi radian ke derajat. | |
Mengembalikan nilai e. | |
Menghitung nilai eksponensial. | |
Menghitung faktorial. | |
Menyaring elemen dalam array ARRAY. | |
Membulatkan nilai ke bawah. | |
Mengonversi angka menjadi string dalam format tertentu. | |
Membandingkan sekumpulan nilai dan mengembalikan nilai maksimum. | |
Mengembalikan format heksadesimal dari integer atau string. | |
Memeriksa apakah nilai ekspresi adalah NaN. | |
Membandingkan sekumpulan nilai dan mengembalikan nilai minimum. | |
Menghitung logaritma natural. | |
Menghitung logaritma. | |
Menghitung logaritma desimal. | |
Menghitung logaritma biner. | |
Mengembalikan nilai negatif dari sebuah ekspresi. | |
Mengembalikan nilai π. | |
Mengembalikan nilai dari sebuah ekspresi. | |
Menghitung pangkat. | |
Mengonversi derajat ke radian. | |
Mengembalikan bilangan acak. | |
Mengembalikan nilai yang dibulatkan ke tempat desimal tertentu. | |
Menghitung nilai pergeseran kiri. | |
Menghitung nilai pergeseran kanan. | |
Menghitung nilai pergeseran kanan tanpa tanda. | |
Mengembalikan tanda dari parameter input. | |
Menghitung sinus. | |
Menghitung sinus hiperbolik. | |
Menghitung akar kuadrat. | |
Menghitung tangen. | |
Menghitung tangen hiperbolik. | |
Mengembalikan nilai yang dipotong ke tempat desimal tertentu. | |
Mengembalikan string yang direpresentasikan oleh string heksadesimal. | |
Mengembalikan nomor bucket di mana nilai bidang tertentu jatuh. |
Untuk informasi lebih lanjut tentang perhitungan, seperti menghitung sisa pembagian, lihat Operator aritmatika.
Catatan Penggunaan
MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang digunakan melibatkan tipe data baru dalam edisi tipe data MaxCompute V2.0, Anda harus menjalankan pernyataan SET untuk mengaktifkan edisi tipe data tersebut. Tipe data baru termasuk TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.
Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, tambahkan
set odps.sql.type.system.odps2=true;sebelum pernyataan SQL yang ingin dijalankan, lalu kirim dan jalankan bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk proyek sesuai kebutuhan. Konfigurasi ini akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkannya pada tingkat proyek, jalankan perintah berikut:
setproject odps.sql.type.system.odps2=true;Untuk informasi lebih lanjut tentang
setproject, lihat Operasi Proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan saat mengaktifkan edisi tipe data MaxCompute V2.0 pada tingkat proyek, lihat Edisi Tipe Data.
Data Sampel
Untuk membantu memahami cara menggunakan setiap fungsi, topik ini menyediakan data sumber dan contoh berdasarkan data tersebut. Perintah sampel berikut membuat tabel bernama mf_math_fun_t dan menambahkan data ke dalamnya.
create table if not exists mf_math_fun_t(
int_data int,
bigint_data bigint,
double_data double,
decimal_data decimal,
float_data float,
string_data string
);
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');Perintah berikut mengambil data dari tabel mf_math_fun_t:
select * from mf_math_fun_t;
-- Hasil berikut dikembalikan.
+----------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+----------+-------------+-------------+--------------+------------+-------------+
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
+----------+-------------+-------------+--------------+------------+-------------+ABS
Sintaksis
bigint|double|decimal abs(<number>)Deskripsi
Menghitung nilai absolut dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, atau DECIMAL. Jika nilai input bertipe STRING, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
CatatanJika nilai input bertipe BIGINT dan melebihi rentang nilai BIGINT, nilai tersebut akan dikonversi ke tipe DOUBLE. Konversi ini dapat menyebabkan hilangnya presisi.
Nilai Kembali
Tipe data nilai kembali sama dengan tipe data parameter input. Aturan berikut berlaku:
Jika number bertipe DOUBLE, BIGINT, atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING, nilai bertipe DOUBLE akan dikembalikan.
Jika number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah NULL. select abs(null); -- Nilai kembali adalah 1. select abs(-1); -- Nilai kembali adalah 1.2. select abs(-1.2); -- Nilai kembali adalah 2.0. select abs("-2"); -- Nilai kembali adalah 1.2232083745629837e32. select abs(122320837456298376592387456923748); -- Menghitung nilai absolut dari kolom id dalam tabel tbl1. Kode berikut memberikan contoh lengkap tentang cara menggunakan fungsi ABS dalam pernyataan SQL. Fungsi bawaan lainnya, kecuali fungsi jendela dan fungsi agregat, digunakan dengan cara serupa. select abs(id) from tbl1;Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung nilai absolut.
select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | 10 | 0.525 | 0.525 | 10.0 | | NULL | 0.1 | 0.1 | 10.0 | | 1 | NULL | 20.45 | 30.0 | | 4 | 0.89 | NULL | 30.0 | | 50 | 1.0 | 1 | 50.0 | | 6 | 1.5 | 1.5 | 50.0 | | 70 | 7.5 | 7.5 | NULL | | 1 | 10.2 | 10.2 | 1.0 | | 90 | 2.58 | 2.58 | 0.0 | | 10 | 5.8 | 5.8 | 90.0 | +------------+------------+-------------+------------+
ACOS
Sintaksis
double|decimal acos(<number>)Deskripsi
Menghitung arccosinus dari number.
Parameter
number: Diperlukan. Nilai dalam rentang [-1, 1]. Nilai tersebut bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Tipe data nilai kembali sama dengan tipe data parameter input. Nilai tersebut berada dalam rentang 0 hingga π. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number tidak berada dalam rentang [-1, 1], NULL akan dikembalikan. Dalam mode kompatibel Hive, NaN akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
--Nilai kembali adalah 0.5155940062460905. select acos("0.87"); --Nilai kembali adalah 1.5707963267948966. select acos(0); --Nilai kembali adalah NULL. select acos(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung arccosinus.
select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+-------------------+--------------------+--------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------+--------------------+--------------------+---------------------+ | NULL | 1.0180812136981134 | 1.0180812136981134 | NULL | | NULL | 1.6709637479564565 | 1.6709637479564565 | NULL | | 3.141592653589793 | NULL | NULL | NULL | | NULL | 0.4734511572720662 | NULL | NULL | | NULL | 3.141592653589793 | 3.141592653589793 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | 3.141592653589793 | | NULL | NULL | NULL | 1.5707963267948966 | | NULL | NULL | NULL | NULL | +-------------------+--------------------+--------------------+---------------------+
ATAN2
Sintaksis
double atan2(<expr1>, <expr2>)Deskripsi
Menghitung arctangen dari expr1/expr2.
Parameter
expr1: Diperlukan. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
expr2: Diperlukan. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Nilainya berada dalam rentang
-π/2 hingga π/2. Jika nilai expr1 atau expr2 adalah NULL, NULL akan dikembalikan.Contoh
-- Nilai kembali adalah 0.0. select atan2(0, 0);
ASIN
Sintaksis
double|decimal asin(<number>)Deskripsi
Menghitung arcsinus dari number.
Parameter
number: Diperlukan. Nilai dalam rentang [-1, 1]. Nilai tersebut bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Tipe data nilai kembali sama dengan tipe data parameter input. Nilai tersebut berada dalam rentang
-π/2 hingga π/2. Aturan berikut berlaku:Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number tidak berada dalam rentang [-1, 1], NULL akan dikembalikan. Dalam mode kompatibel Hive, NaN akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1.5707963267948966. select asin(1); -- Nilai kembali adalah -1.5707963267948966. select asin(-1); -- Nilai kembali adalah NULL. select asin(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung arcsinus.
select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+--------------------+---------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+---------------------+---------------------+---------------------+ | NULL | 0.5527151130967832 | 0.5527151130967832 | NULL | | NULL | -0.1001674211615598 | -0.1001674211615598 | NULL | | -1.5707963267948966| NULL | NULL | NULL | | NULL | 1.0973451695228305 | NULL | NULL | | NULL | -1.5707963267948966 | -1.5707963267948966 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 1.5707963267948966 | NULL | NULL | -1.5707963267948966 | | NULL | NULL | NULL | 0.0 | | NULL | NULL | NULL | NULL | +--------------------+---------------------+---------------------+---------------------+
ATAN
Sintaksis
double atan(<number>)Deskripsi
Menghitung arctangen dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Nilainya berada dalam rentang
-π/2 hingga π/2. Jika nilai number adalah NULL, NULL akan dikembalikan.Contoh
Contoh data statis
-- Nilai kembali adalah 0.7853981633974483. select atan(1); -- Nilai kembali adalah -0.7853981633974483. select atan(-1); -- Nilai kembali adalah NULL. select atan(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung arctangen.
select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -1.4711276743037347 | 0.483447001567199 | 0.483447001567199 | 1.4711276743037347 | | NULL | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 | | -0.7853981633974483 | NULL | 1.521935491607842 | 1.5374753309166493 | | 1.3258176636680326 | 0.7272626879966904 | NULL | -1.5374753309166493 | | -1.550798992821746 | -0.7853981633974483 | -0.7853981633974483 | 1.550798992821746 | | 1.4056476493802699 | 0.982793723247329 | 0.982793723247329 | -1.550798992821746 | | -1.5565115842075 | -1.4382447944982226 | -1.4382447944982226 | NULL | | 0.7853981633974483 | -1.473069419436178 | -1.473069419436178 | -0.7853981633974483 | | -1.5596856728972892 | 1.2010277920014796 | 1.2010277920014796 | 0.0 | | 1.4711276743037347 | -1.4000611153196139 | -1.4000611153196139 | -1.5596856728972892 | +---------------------+----------------------+----------------------+---------------------+
BIN
Sintaksis
string bin(<number>)Deskripsi
Mengembalikan representasi biner dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe BIGINT, INT, SMALLINT, atau TINYINT.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:
Jika tipe data number bukan BIGINT, INT, SMALLINT, atau TINYINT, kesalahan akan dikembalikan.
Jika nilai number adalah 0, 0 akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 0. select bin(0); -- Nilai kembali adalah NULL. select bin(null); -- Nilai kembali adalah 1100. select bin(12);Contoh data tabel
Berdasarkan data sampel, perintah berikut mendapatkan representasi biner dari kolom int_data dan bigint_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;Hasil berikut dikembalikan.
+----------------------------------------------------------------------------+------------------------------------------------------------------+ | int_new | bigint_new | +----------------------------------------------------------------------------+------------------------------------------------------------------+ | NULL | 1111111111111111111111111111111111111111111111111111111111110110 | | 1111111111111111111111111111111111111111111111111111111111101100 | NULL | | 0 | 1111111111111111111111111111111111111111111111111111111111111111 | | 1111111111111111111111111111111111111111111111111111111111011000 | 100 | | 101 | 1111111111111111111111111111111111111111111111111111111111001110 | | 1111111111111111111111111111111111111111111111111111111111000100 | 110 | | 1111111111111111111111111111111111111111111111111111111111111111 | 1111111111111111111111111111111111111111111111111111111110111010 | | 1111111111111111111111111111111111111111111111111111111110110000 | 1 | | 1001 | 1111111111111111111111111111111111111111111111111111111110100110 | | 1111111111111111111111111111111111111111111111111111111110011100 | 1010 | +----------------------------------------------------------------------------+------------------------------------------------------------------+
CBRT
Sintaksis
double cbrt(<number>)Deskripsi
Menghitung akar pangkat tiga dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, atau STRING.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:
Jika tipe data number bukan BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, atau STRING, kesalahan akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2.0. select cbrt(8); -- Nilai kembali adalah NULL. select cbrt(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mendapatkan akar pangkat tiga dari semua kolom kecuali decimal_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------------------+---------------------+----------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | float_new | string_new | +---------------------+---------------------+----------------------+---------------------+---------------------+ | NULL | -2.1544346900318834 | 0.806714323012272 | 0.8067143108004823 | 2.1544346900318834 | | -2.7144176165949063 | NULL | -0.46415888336127786 | -0.46415888566678 | -2.1544346900318834 | | 0.0 | -1.0 | NULL | -1.0 | 3.107232505953859 | | -3.4199518933533937 | 1.5874010519681996 | 0.9619001716077046 | 0.961900166454112 | -3.107232505953859 | | 1.7099759466766968 | -3.6840314986403864 | -1.0 | NULL | 3.6840314986403864 | | -3.9148676411688634 | 1.8171205928321394 | 1.1447142425533317 | 1.1447142425533317 | -3.6840314986403864 | | -1.0 | -4.121285299808557 | -1.9574338205844317 | -1.9574338205844317 | NULL | | -4.308869380063767 | 1.0 | -2.168702885250197 | -2.1687028717323127 | -1.0 | | 2.080083823051904 | -4.481404746557165 | 1.3715339700741747 | 1.3715339565548288 | 0.0 | | -4.641588833612778 | 2.1544346900318834 | -1.7967017791430528 | -1.7967017988380907 | -4.481404746557165 | +---------------------+---------------------+----------------------+---------------------+---------------------+
CEIL
Sintaksis
bigint ceil(<value>)Deskripsi
Membulatkan nilai ke atas. Fungsi ini mengembalikan bilangan bulat terkecil yang tidak kurang dari nilai input value.
Parameter
value: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Jika nilai value adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2. select ceil(1.1); -- Nilai kembali adalah -1. select ceil(-1.1); -- Nilai kembali adalah NULL. select ceil(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut membulatkan nilai ke atas.
select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 1 | 1 | 10 | | NULL | 0 | 0 | -10 | | -1 | NULL | 21 | 30 | | 4 | 1 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 2 | 2 | -50 | | -70 | -7 | -7 | NULL | | 1 | -10 | -10 | -1 | | -90 | 3 | 3 | 0 | | 10 | -5 | -5 | -90 | +------------+------------+-------------+------------+
CONV
Sintaksis
STRING CONV(<input>, BIGINT <from_base>, BIGINT <to_base>)Deskripsi
Fungsi ini mengonversi angka dari satu basis ke basis lain dan mengembalikan hasilnya sebagai string.
Parameter
Parameter
Diperlukan
Deskripsi
input
Ya
Nilai bertipe STRING.
CatatanJika proyek Anda dalam mode kompatibel Hive, yang berarti Anda telah menjalankan perintah
set odps.sql.hive.compatible=true;, konversi implisit nilai BIGINT dan DOUBLE didukung.Jika proyek Anda tidak dalam mode kompatibel Hive, yang berarti Anda telah menjalankan perintah
set odps.sql.hive.compatible=false;, konversi implisit nilai BIGINT dan DOUBLE tidak didukung.
from_base
Ya
Nilai radix harus berupa bilangan bulat desimal 2, 8, 10, atau 16. Konversi tipe implisit tidak didukung.
to_base
Ya
Nilai radix harus berupa bilangan bulat desimal 2, 8, 10, atau 16. Konversi tipe implisit tidak didukung.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:
Jika nilai input, from_base, atau to_base adalah NULL, NULL akan dikembalikan.
Konversi dilakukan dengan presisi 64-bit. Jika terjadi overflow, NULL akan dikembalikan.
Jika nilai input input bertipe BIGINT atau DOUBLE, NULL akan dikembalikan dalam mode non-kompatibel Hive karena konversi implisit tidak didukung.
Jika nilai input input bernilai negatif, NULL akan dikembalikan dalam mode non-kompatibel Hive, sedangkan dalam mode kompatibel Hive, nilai 0 akan dikembalikan.
Jika nilai input input adalah desimal, NULL akan dikembalikan dalam mode non-kompatibel Hive. Dalam mode kompatibel Hive, nilai tersebut dikonversi menjadi integer dan kemudian dikonversi ke basis yang ditentukan. Bagian desimal dibuang.
Contoh
Contoh data statis
-- Nilai kembali adalah 12. SELECT CONV('1100', 2, 10); -- Nilai kembali adalah C. SELECT CONV('1100', 2, 16); -- Nilai kembali adalah 171. SELECT CONV('ab', 16, 10); -- Nilai kembali adalah AB. SELECT CONV('ab', 16, 16); -- Nilai kembali adalah NULL. SELECT CONV('1100', null, 10);Contoh data tabel
Berdasarkan data sampel, perintah berikut mengonversi nilai ke format biner.
SELECT CONV(bigint_data,10,2) AS bigint_new, CONV(double_data,10,2) AS double_new, CONV(decimal_data,10,2) AS decimal_new, CONV(string_data,10,2) AS string_new FROM mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | NULL | 0 | 0 | 1010 | | NULL | NULL | NULL | NULL | | NULL | NULL | 10100 | 11110 | | 100 | 0 | NULL | NULL | | NULL | NULL | NULL | 110010 | | 110 | 1 | 1 | NULL | | NULL | NULL | NULL | NULL | | 1 | NULL | NULL | NULL | | NULL | 10 | 10 | 0 | | 1010 | NULL | NULL | NULL | +------------+------------+-------------+------------+
CORR
Sintaksis
double corr(<col1>, <col2>)Deskripsi
Menghitung koefisien korelasi Pearson dari dua kolom data. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
col1 dan col2: Diperlukan. Nama dua kolom dalam tabel yang ingin Anda hitung koefisien Pearson-nya. Kolom tersebut harus bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, atau DECIMAL. Tipe data col1 dan col2 bisa berbeda.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika baris dalam kolom input berisi nilai NULL, baris tersebut tidak digunakan dalam perhitungan.
Contoh
Berdasarkan data sampel, perintah berikut menghitung koefisien korelasi Pearson dari kolom double_data dan float_data.
select corr(double_data,float_data) from mf_math_fun_t;Nilai kembali adalah 1.0.
COS
Sintaksis
double|decimal cos(<number>)Deskripsi
Menghitung kosinus dari number. Nilai input dalam radian.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2.6794896585028633e-8. select cos(3.1415926/2); -- Nilai kembali adalah -0.9999999999999986. select cos(3.1415926); -- Nilai kembali adalah NULL. select cos(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung kosinus.
select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------------------+--------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+--------------------+----------------------+---------------------+ | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412 | -0.8390715290764524 | | NULL | 0.9950041652780258 | 0.9950041652780258 | -0.8390715290764524 | | 0.5403023058681398 | NULL | -0.02964340851507803 | 0.15425144988758405 | | -0.6536436208636119 | 0.6294120265736969 | NULL | 0.15425144988758405 | | 0.9649660284921133 | 0.5403023058681398 | 0.5403023058681398 | 0.9649660284921133 | | 0.960170286650366 | 0.0707372016677029 | 0.0707372016677029 | 0.9649660284921133 | | 0.6333192030862999 | 0.3466353178350258 | 0.3466353178350258 | NULL | | 0.5403023058681398 | -0.7142656520272003| -0.7142656520272003 | 0.5403023058681398 | | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756 | 1.0 | | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189 | -0.4480736161291701 | +---------------------+--------------------+----------------------+---------------------+
COSH
Sintaksis
double|decimal cosh(<number>)Deskripsi
Menghitung kosinus hiperbolik dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipeDOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2.5091784169949913. select cosh(3.1415926/2); -- Nilai kembali adalah NULL. select cosh(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung kosinus hiperbolik.
select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+-----------------------+--------------------+--------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+--------------------+--------------------+----------------------+ | 11013.232920103324 | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324 | | NULL | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324 | | 1.5430806348152437 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.308232836016487 | 1.42289270202111 | NULL | 5343237290762.231 | | 2.592352764293536e21 | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 | | 201.7156361224559 | 2.352409615243247 | 2.352409615243247 | 2.592352764293536e21 | | 1.2577193354595834e30 | 904.0214837702166 | 904.0214837702166 | NULL | | 1.5430806348152437 | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437 | | 6.102016471589204e38 | 6.636456081840602 | 6.636456081840602 | 1.0 | | 11013.232920103324 | 165.151293732197 | 165.151293732197 | 6.102016471589204e38 | +-----------------------+--------------------+--------------------+----------------------+
COT
Sintaksis
double|decimal cot(<number>)Deskripsi
Menghitung kotangen dari number. Nilai input dalam radian.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2.6794896585028643E-8. select cot(3.1415926/2); -- Nilai kembali adalah NULL. select cot(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung kotangen.
select cot(bigint_data) as bigint_new, cot(double_data) as double_new, cot(decimal_data) as decimal_new, cot(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+-----------------------+---------------------+---------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+---------------------+---------------------+----------------------+ | -1.54235104535692 | 1.7264594764178474 | 1.7264594764178474 | 1.54235104535692 | | NULL | -9.966644423259238 | -9.966644423259238 | -1.54235104535692 | | -0.6420926159343308 | NULL | -0.02965644140592836| -0.15611995216165922 | | 0.8636911544506167 | 0.8099792954471944 | NULL | 0.15611995216165922 | | 3.6778144508505695 | -0.6420926159343308 | -0.6420926159343308 | -3.6778144508505695 | | -3.436353004180128 | 0.07091484430265245 | 0.07091484430265245 | 3.6778144508505695 | | -0.8183574478651038 | -0.36954725630901636| -0.36954725630901636| NULL | | 0.6420926159343308 | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308 | | 0.5012027833801532 | -1.5893944776331337 | -1.5893944776331337 | 1.0 | | 1.54235104535692 | 1.9059736612916494 | 1.9059736612916494 | 0.5012027833801532 | +-----------------------+---------------------+---------------------+----------------------+
DEGREES
Sintaksis
double degrees(<number>)Deskripsi
Mengonversi nilai dari radian ke derajat.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 90.0. select degrees(1.5707963267948966); -- Nilai kembali adalah 0.0. select degrees(0); -- Nilai kembali adalah NULL. select degrees(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mendapatkan derajat yang sesuai dengan semua kolom.
--Aktifkan tipe data baru MaxCompute 2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | NULL | -572.9577951308232 | 30.08028424436822 | 30.08028424436822 | 30.080282878330387 | 572.9577951308232 | | -1145.9155902616465 | NULL | -5.729577951308232 | -5.729577951308232 | -5.729578036685597 | -572.9577951308232 | | 0.0 | -57.29577951308232 | NULL | 1171.6986910425335 | -57.29577951308232 | 1718.8733853924698 | | -2291.831180523293 | 229.1831180523293 | 50.99324376664326 | NULL | 50.99324294702057 | -1718.8733853924698 | | 286.4788975654116 | -2864.7889756541163 | -57.29577951308232 | -57.29577951308232 | NULL | 2864.7889756541163 | | -3437.7467707849396 | 343.77467707849394 | 85.94366926962348 | 85.94366926962348 | 85.94366926962348 | -2864.7889756541163 | | -57.29577951308232 | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL | | -4583.662361046586 | 57.29577951308232 | -584.4169510334397 | -584.4169510334397 | -584.416940105137 | -57.29577951308232 | | 515.662015617741 | -5156.620156177409 | 147.8231111437524 | 147.8231111437524 | 147.82310677243132 | 0.0 | | -5729.5779513082325 | 572.9577951308232 | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409 | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
E
Sintaksis
double e()Deskripsi
Mengembalikan nilai dari
e. Ini adalah fungsi ekstensi di MaxCompute V2.0.Nilai Kembali
Nilai bertipe DOUBLE dikembalikan.
Contoh
-- Nilai kembali adalah 2.718281828459045. select e();
EXP
Sintaksis
double|decimal exp(<number>)Deskripsi
Menghitung nilai eksponensial dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 4.810477252069109. select exp(3.1415926/2); -- Nilai kembali adalah NULL. select exp(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung nilai eksponensial.
select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+-------------------------+-------------------------+-------------------------+-------------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------------+-------------------------+-------------------------+-------------------------+ | 0.000045399929762484854 | 1.6904588483790914 | 1.6904588483790914 | 22026.465794806718 | | NULL | 0.9048374180359595 | 0.9048374180359595 | 0.000045399929762484854 | | 0.36787944117144233 | NULL | 760890487.9368925 | 10686474581524.463 | | 54.598150033144236 | 2.4351296512898744 | NULL | 9.357622968840175e-14 | | 1.9287498479639178e-22 | 0.36787944117144233 | 0.36787944117144233 | 5.184705528587072e21 | | 403.4287934927351 | 4.4816890703380645 | 4.4816890703380645 | 1.9287498479639178e-22 | | 3.975449735908647e-31 | 0.0005530843701478336 | 0.0005530843701478336 | NULL | | 2.718281828459045 | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233 | | 8.194012623990515e-40 | 13.197138159658358 | 13.197138159658358 | 1.0 | | 22026.465794806718 | 0.0030275547453758153 | 0.0030275547453758153 | 8.194012623990515e-40 | +-------------------------+-------------------------+-------------------------+-------------------------+
FACTORIAL
Sintaksis
bigint factorial(<number>)Deskripsi
Mengembalikan faktorial dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe BIGINT, INT, SMALLINT, atau TINYINT. Nilainya harus dalam rentang [0, 20].
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Aturan berikut berlaku:
Jika nilai number adalah 0, 1 akan dikembalikan.
Jika nilai number adalah NULL atau tidak berada dalam rentang [0, 20], NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 120. 5! = 5 × 4 × 3 × 2 × 1 = 120 select factorial(5); -- Nilai kembali adalah 1. select factorial(0); -- Nilai kembali adalah NULL. select factorial(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung faktorial dari kolom int_data dan bigint_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+ | int_new | bigint_new | +------------+------------+ | NULL | NULL | | NULL | NULL | | 1 | NULL | | NULL | 24 | | 120 | NULL | | NULL | 720 | | NULL | NULL | | NULL | 1 | | 362880 | NULL | | NULL | 3628800 | +------------+------------+
FILTER
Sintaksis
array<T> filter(array<T> <a>, function<T,boolean> <func>)Parameter
a: diperlukan. Parameter ini menentukan array.
Tdalamarray<T>menentukan tipe data elemen dalam array. Elemen dapat berupa tipe data apa pun.func: diperlukan. Parameter ini menentukan fungsi bawaan, fungsi yang ditentukan pengguna, atau ekspresi yang digunakan untuk menyaring elemen dalam Array a. Nilainya harus memiliki tipe data yang sama dengan elemen dalam Array a. Hasil keluaran dari fungsi atau ekspresi tersebut adalah tipe BOOLEAN.
Nilai Kembali
Nilai bertipe ARRAY dikembalikan.
Contoh
-- Nilai kembali adalah [2, 3]. select filter(array(1, 2, 3), x -> x > 1);CatatanDalam contoh ini, kombinasi tanda hubung dan tanda kurung penutup (->) digunakan. Untuk informasi lebih lanjut tentang cara menggunakan kombinasi tanda hubung dan tanda kurung penutup
(->)dalam fungsi Lambda, lihat Fungsi Lambda.
FLOOR
Sintaksis
bigint floor(<number>)Deskripsi
Membulatkan nilai ke bawah. Fungsi ini mengembalikan bilangan bulat terbesar yang tidak lebih besar dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1. select floor(1.2); -- Nilai kembali adalah 0. select floor(0.1); -- Nilai kembali adalah -2. select floor(-1.2); -- Nilai kembali adalah -1. select floor(-0.1); -- Nilai kembali adalah 0. select floor(0.0); -- Nilai kembali adalah 0. select floor(-0.0); -- Nilai kembali adalah NULL. select floor(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut membulatkan nilai ke bawah.
select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 0 | 0 | 10 | | NULL | -1 | -1 | -10 | | -1 | NULL | 20 | 30 | | 4 | 0 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 1 | 1 | -50 | | -70 | -8 | -8 | NULL | | 1 | -11 | -11 | -1 | | -90 | 2 | 2 | 0 | | 10 | -6 | -6 | -90 | +------------+------------+-------------+------------+
FORMAT_NUMBER
Sintaksis
string format_number(float|double|decimal <expr1>, <expr2>)Deskripsi
Mengonversi angka menjadi string dalam format tertentu. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
expr1: Diperlukan. Data yang ingin diformat. Nilainya bisa bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
expr2: Diperlukan. Format tujuan. Anda dapat menentukan jumlah tempat desimal yang ingin dipertahankan. Anda juga dapat menentukan deskripsi format, seperti
#,###,###.##.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:
Jika expr2 > 0, nilai dibulatkan ke jumlah tempat desimal yang ditentukan.
Jika expr2 = 0, tidak ada titik desimal atau bagian desimal yang disertakan.
Jika expr2 < 0 atau expr2 > 340, kesalahan akan dikembalikan.
Jika nilai expr1 atau expr2 adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 5.230. select format_number(5.230134523424545456,3); -- Nilai kembali adalah 12,332.123. select format_number(12332.123456, '#,###,###,###.###'); -- Nilai kembali adalah NULL. select format_number(null,3);Contoh data tabel
Berdasarkan data sampel, perintah berikut mempertahankan sejumlah tempat desimal untuk semua kolom.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------+------------+------------+-------------+-----------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------+------------+------------+-------------+-----------+------------+ | NULL | -10.0 | 0.53 | 0.5 | 1 | 10.0 | | -20.0 | NULL | -0.10 | -0.1 | -0 | -10.0 | | 0.0 | -1.0 | NULL | 20.5 | -1 | 30.0 | | -40.0 | 4.0 | 0.89 | NULL | 1 | -30.0 | | 5.0 | -50.0 | -1.00 | -1.0 | NULL | 50.0 | | -60.0 | 6.0 | 1.50 | 1.5 | 2 | -50.0 | | -1.0 | -70.0 | -7.50 | -7.5 | -8 | NULL | | -80.0 | 1.0 | -10.20 | -10.2 | -10 | -1.0 | | 9.0 | -90.0 | 2.58 | 2.6 | 3 | 0.0 | | -100.0 | 10.0 | -5.80 | -5.8 | -6 | -90.0 | +---------+------------+------------+-------------+-----------+------------+
HEX
Sintaksis
string hex(<number>)Deskripsi
Mengonversi nilai numerik atau string ke format heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
Nilai Kembali
Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:
Jika nilai number bukan 0 atau NULL, nilai bertipe STRING akan dikembalikan.
Jika nilai number adalah 0, 0 akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 0. select hex(0); -- Nilai kembali adalah 616263. select hex('abc'); -- Nilai kembali adalah 11. select hex(17); -- Nilai kembali adalah 3137. select hex('17'); -- Kesalahan dikembalikan. select hex(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mengonversi semua kolom ke format heksadesimal.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------------+------------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------------+------------------+------------+-------------+------------+------------+ | NULL | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235 | 302E353235 | 3130 | | FFFFFFFFFFFFFFEC | NULL | 2D302E31 | 2D302E31 | 2D302E31 | 2D3130 | | 0 | FFFFFFFFFFFFFFFF | NULL | 32302E3435 | 2D31 | 3330 | | FFFFFFFFFFFFFFD8 | 4 | 302E3839 | NULL | 302E3839 | 2D3330 | | 5 | FFFFFFFFFFFFFFCE | 2D312E30 | 2D31 | NULL | 3530 | | FFFFFFFFFFFFFFC4 | 6 | 312E35 | 312E35 | 312E35 | 2D3530 | | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35 | 2D372E35 | 2D372E35 | NULL | | FFFFFFFFFFFFFFB0 | 1 | 2D31302E32 | 2D31302E32 | 2D31302E32 | 2D31 | | 9 | FFFFFFFFFFFFFFA6 | 322E3538 | 322E3538 | 322E3538 | 30 | | FFFFFFFFFFFFFF9C | A | 2D352E38 | 2D352E38 | 2D352E38 | 2D3930 | +------------------+------------------+------------+-------------+------------+------------+
ISNAN
Sintaksis
boolean isnan(<expr>)Deskripsi
Memeriksa apakah nilai dari expr adalah NaN.
Parameter
expr: Diperlukan. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Jika nilai dari expr adalah NaN, True akan dikembalikan. Sebaliknya, False akan dikembalikan.
Jika nilai dari expr adalah NULL, False akan dikembalikan.
Contoh
-- Nilai kembali adalah False. SELECT isnan(100.1);
LN
Sintaksis
double|decimal ln(<number>)Deskripsi
Menghitung logaritma natural dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai number adalah bilangan negatif atau 0, NULL akan dikembalikan.
Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1.144729868791239. select ln(3.1415926); -- Nilai kembali adalah NULL. select ln(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung logaritma natural.
select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+--------------------+----------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+---------------------+---------------------+ | NULL | -0.6443570163905132 | -0.6443570163905132 | 2.302585092994046 | | NULL | NULL | NULL | NULL | | NULL | NULL | 3.017982882488811 | 3.4011973816621555 | | 1.3862943611198906 | -0.11653381625595151 | NULL | NULL | | NULL | NULL | NULL | 3.912023005428146 | | 1.791759469228055 | 0.4054651081081644 | 0.4054651081081644 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 0.9477893989335261 | 0.9477893989335261 | NULL | | 2.302585092994046 | NULL | NULL | NULL | +--------------------+----------------------+---------------------+---------------------+
LOG
Sintaksis
double log(<base>, <x>)Deskripsi
Menghitung logaritma dari x dengan basis base.
Parameter
base: Diperlukan. Basis. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
x: Diperlukan. Nilai yang ingin Anda hitung logaritmanya. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:
Jika nilai dari base atau x adalah NULL, NULL akan dikembalikan.
Jika nilai dari base atau x adalah bilangan negatif atau 0, NULL akan dikembalikan.
Jika nilai dari base adalah 1, yang menyebabkan kesalahan pembagian oleh nol, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 4.0. select log(2, 16); -- Nilai kembali adalah NULL. select log(2, null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung logaritma basis-2 dari kolom.
select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+--------------------+----------------------+--------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+--------------------+--------------------+ | NULL | -0.929610672108602 | -0.929610672108602 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.354028938054387 | 4.906890595608519 | | 2.0 | -0.16812275880832692 | NULL | NULL | | NULL | NULL | NULL | 5.643856189774724 | | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 1.3673710656485296 | 1.3673710656485296 | NULL | | 3.3219280948873626 | NULL | NULL | NULL | +--------------------+----------------------+--------------------+--------------------+
LOG10
Sintaksis
double log10(<number>)Deskripsi
Mengembalikan logaritma basis-10 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bilangan negatif, atau NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah NULL. select log10(null); -- Nilai kembali adalah NULL. select log10(0); -- Nilai kembali adalah 0.9030899869919435. select log10(8);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung logaritma basis-10 dari semua kolom.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;Hasil berikut telah dikembalikan.
+--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | NULL | NULL | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606 | 1.0 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 1.3106933123433606 | NULL | 1.4771212547196624 | | NULL | 0.6020599913279623 | -0.0506099933550872 | NULL | -0.050610000335573106 | NULL | | 0.6989700043360187 | NULL | NULL | NULL | NULL | 1.6989700043360185 | | NULL | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 0.9542425094393249 | NULL | 0.4116197059632301 | 0.4116197059632301 | 0.411619693120579 | NULL | | NULL | 1.0 | NULL | NULL | NULL | NULL | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
LOG2
Sintaksis
double log2(<number>)Deskripsi
Mengembalikan logaritma basis-2 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bilangan negatif, atau NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah NULL. select log2(null); -- Nilai kembali adalah NULL. select log2(0); -- Nilai kembali adalah 3.0. select log2(8);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung logaritma basis-2 dari semua kolom.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | NULL | NULL | -0.929610672108602 | -0.929610672108602 | -0.9296107376258038 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 4.354028938054387 | NULL | 4.906890595608519 | | NULL | 2.0 | -0.16812275880832692 | NULL | -0.16812278199699915 | NULL | | 2.321928094887362 | NULL | NULL | NULL | NULL | 5.643856189774724 | | NULL | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 3.1699250014423126 | NULL | 1.3673710656485296 | 1.3673710656485296 | 1.367371022986166 | NULL | | NULL | 3.3219280948873626 | NULL | NULL | NULL | NULL | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
NEGATIVE
Sintaksis
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)Deskripsi
Mengembalikan nilai negatif dari expr.
Parameter
expr: Diperlukan. Ekspresi input. Nilainya bisa bertipe TINYINT, SMALLINT, INT, BIGINT, DOUBLE, atau DECIMAL.
Nilai Kembali
Mengembalikan nilai negatif dari ekspresi expr.
Contoh
-- Nilai kembali adalah -1. SELECT negative(1);
PI
Sintaksis
double pi()Deskripsi
Mengembalikan nilai π. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan.
Contoh
-- Nilai kembali adalah 3.141592653589793. select pi();
POSITIVE
Sintaksis
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)Deskripsi
Mengembalikan nilai dari expr.
Parameter
expr: Diperlukan. Ekspresi input. Nilainya bisa bertipe TINYINT, SMALLINT, INT, BIGINT, DOUBLE, atau DECIMAL.
Nilai Kembali
Mengembalikan nilai dari ekspresi expr.
Contoh
-- Nilai kembali adalah 1. SELECT positive(1);
POW
Sintaksis
double|decimal pow(<x>, <y>)Deskripsi
Menghitung nilai dari x pangkat y, yaitu
x^y.Parameter
x: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
y: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika x atau y bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika x atau y bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai x atau y adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 65536.0. select pow(2, 16); -- Nilai kembali adalah NULL. select pow(2, null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung nilai kolom pangkat 2.
select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+----------------------+----------------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+----------------------+----------------------+------------+ | 100.0 | 0.275625 | 0.275625 | 100.0 | | NULL | 0.010000000000000002 | 0.010000000000000002 | 100.0 | | 1.0 | NULL | 418.2025 | 900.0 | | 16.0 | 0.7921 | NULL | 900.0 | | 2500.0 | 1.0 | 1.0 | 2500.0 | | 36.0 | 2.25 | 2.25 | 2500.0 | | 4900.0 | 56.25 | 56.25 | NULL | | 1.0 | 104.03999999999999 | 104.03999999999999 | 1.0 | | 8100.0 | 6.6564000000000005 | 6.6564000000000005 | 0.0 | | 100.0 | 33.64 | 33.64 | 8100.0 | +------------+----------------------+----------------------+------------+
RADIANS
Sintaksis
double radians(<number>)Deskripsi
Mengonversi nilai dari derajat ke radian. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1.5707963267948966. select radians(90); -- Nilai kembali adalah 0.0. select radians(0); -- Nilai kembali adalah NULL. select radians(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mengonversi semua kolom ke radian.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | NULL | -0.17453292519943295 | 0.00916297857297023 | 0.00916297857297023 | 0.009162978156851308 | 0.17453292519943295 | | -0.3490658503988659 | NULL | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295 | | 0.0 | -0.017453292519943295 | NULL | 0.3569198320328404 | -0.017453292519943295 | 0.5235987755982988 | | -0.6981317007977318 | 0.06981317007977318 | 0.015533430342749534 | NULL | 0.015533430093078181 | -0.5235987755982988 | | 0.08726646259971647 | -0.8726646259971648 | -0.017453292519943295 | -0.017453292519943295 | NULL | 0.8726646259971648 | | -1.0471975511965976 | 0.10471975511965977 | 0.02617993877991494 | 0.02617993877991494 | 0.02617993877991494 | -0.8726646259971648 | | -0.017453292519943295 | -1.2217304763960306 | -0.1308996938995747 | -0.1308996938995747 | -0.1308996938995747 | NULL | | -1.3962634015954636 | 0.017453292519943295 | -0.17802358370342158 | -0.17802358370342158 | -0.17802358037447025 | -0.017453292519943295 | | 0.15707963267948966 | -1.5707963267948966 | 0.045029494701453704 | 0.045029494701453704 | 0.04502949336987316 | 0.0 | | -1.7453292519943295 | 0.17453292519943295 | -0.10122909661567112 | -0.10122909661567112 | -0.10122909994462247 | -1.5707963267948966 | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
RAND
Sintaksis
double rand(bigint <seed>)Deskripsi
Mengembalikan bilangan acak bertipe DOUBLE dalam rentang 0 hingga 1.
Parameter
seed: Opsional. Nilai bertipe BIGINT. Seed menentukan nilai awal untuk urutan bilangan acak.
CatatanAnda dapat menggunakan seed untuk menentukan urutan bilangan acak. Setelah seed ditentukan, nilai kembali dari fungsi ini tetap. Jika lingkungan eksekusi dan nilai dari seed tetap sama, nilai kembali juga akan sama. Untuk mendapatkan hasil yang berbeda, Anda harus mengubah nilai dari seed.
Anda dapat menambahkan parameter berikut sebelum pernyataan SQL. Nilai defaultnya adalah
false.set odps.sql.executionengine.enable.rand.time.seed=true|false;Jika parameter ini disetel ke
false, fungsi RAND menggunakan ID instans saat ini sebagai seed awal untuk bilangan acak guna memastikan idempotensi fungsi.Jika parameter ini disetel ke
true, fungsi RAND menggunakan waktu sistem saat ini sebagai seed awal untuk bilangan acak. Namun, fungsi RAND tidak lagi idempoten dan tidak dapat digunakan sebagai shuffle key. Hal ini menyebabkan hasil yang berbeda saat Anda menjalankan fungsi tersebut lagi.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan.
Contoh
-- Nilai kembali adalah 4.7147460303803655E-4. select rand(); -- Nilai kembali adalah 0.7308781907032909. select rand(1);
ROUND
Sintaksis
double|decimal round(<number>[, bigint <decimal_places>])Deskripsi
Membulatkan nilai ke tempat desimal tertentu.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
decimal_places: Opsional. Konstanta bertipe BIGINT. Parameter ini menentukan jumlah tempat desimal yang ingin Anda bulatkan. Jika Anda menghilangkan parameter ini, nilai dibulatkan ke bilangan bulat terdekat. Nilai defaultnya adalah 0.
CatatanNilai dari decimal_places bisa berupa bilangan negatif. Jika nilainya negatif, fungsi membulatkan digit di sebelah kiri titik desimal dan tidak mempertahankan bagian desimal. Jika nilai dari decimal_places lebih besar dari panjang bagian integer, 0 akan dikembalikan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika tipe data dari decimal_places bukan BIGINT, kesalahan akan dikembalikan.
Jika nilai dari number atau decimal_places adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 125.0. select round(125.315); -- Nilai kembali adalah 125.3. select round(125.315, 1); -- Nilai kembali adalah 125.32. select round(125.315, 2); -- Nilai kembali adalah 125.315. select round(125.315, 3); -- Nilai kembali adalah -125.32. select round(-125.315, 2); -- Nilai kembali adalah 100.0. select round(123.345, -2); -- Nilai kembali adalah 123.345. select round(123.345, 4); -- Nilai kembali adalah 0.0. select round(123.345, -4);Contoh data tabel
Berdasarkan data sampel, perintah berikut membulatkan nilai dalam kolom ke tempat desimal tertentu.
select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10.0 | 0.53 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.5 | 30.0 | | 4.0 | 0.89 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.2 | -10.2 | -1.0 | | -90.0 | 2.58 | 2.6 | 0.0 | | 10.0 | -5.8 | -5.8 | -90.0 | +------------+------------+-------------+------------+
SHIFTLEFT
Sintaksis
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>)Deskripsi
Menjalankan operasi pergeseran kiri (<<). Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number1: Diperlukan. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.
number2: Diperlukan. Nilai bertipe INT.
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
Jika tipe data dari number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.
Jika tipe data dari number2 bukan INT, kesalahan akan dikembalikan.
Jika nilai dari number1 atau number2 adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 4. Nilai biner dari 1 digeser ke kiri dua bit (1<<2, 0001 digeser ke kiri dua bit menjadi 0100). select shiftleft(1,2); -- Nilai kembali adalah 32. Nilai biner dari 4 digeser ke kiri tiga bit (4<<3, 0100 digeser ke kiri tiga bit menjadi 100000). select shiftleft(4,3); -- Nilai kembali adalah NULL. select shiftleft(null,2);Contoh data tabel
Berdasarkan data sampel, perintah berikut melakukan pergeseran kiri pada kolom int_data dan bigint_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -20 | | -40 | NULL | | 0 | -2 | | -80 | 8 | | 10 | -100 | | -120 | 12 | | -2 | -140 | | -160 | 2 | | 18 | -180 | | -200 | 20 | +---------+------------+
SHIFTRIGHT
Sintaksis
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>)Deskripsi
Menjalankan operasi pergeseran kanan (>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number1: Diperlukan. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.
number2: Diperlukan. Nilai bertipe INT.
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
Jika tipe data dari number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.
Jika tipe data dari number2 bukan INT, kesalahan akan dikembalikan.
Jika nilai dari number1 atau number2 adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1. Nilai biner dari 4 digeser ke kanan dua bit (4>>2, 0100 digeser ke kanan dua bit menjadi 0001). select shiftright(4,2); -- Nilai kembali adalah 4. Nilai biner dari 32 digeser ke kanan tiga bit (32>>3, 100000 digeser ke kanan tiga bit menjadi 0100). select shiftright(32,3); -- Nilai kembali adalah NULL. select shiftright(null,3);Contoh data tabel
Berdasarkan data sampel, perintah berikut melakukan pergeseran kanan pada kolom int_data dan bigint_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -5 | | -10 | NULL | | 0 | -1 | | -20 | 2 | | 2 | -25 | | -30 | 3 | | -1 | -35 | | -40 | 0 | | 4 | -45 | | -50 | 5 | +---------+------------+
SHIFTRIGHTUNSIGNED
Sintaksis
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>)Deskripsi
Menjalankan operasi pergeseran kanan tanpa tanda (>>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number1: Diperlukan. Bilangan bulat bertipe TINYINT, SMALLINT, INT, atau BIGINT.
number2: Diperlukan. Bilangan bulat bertipe INT.
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
Jika tipe data dari number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan akan dikembalikan.
Jika tipe data dari number2 bukan INT, kesalahan akan dikembalikan.
Jika nilai dari number1 atau number2 adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2. Nilai biner dari 8 digeser ke kanan dua bit tanpa mempertimbangkan tanda (8>>>2, 1000 digeser ke kanan dua bit menjadi 0010). select shiftrightunsigned(8,2); -- Nilai kembali adalah 1073741820. Nilai biner dari -14 digeser ke kanan dua bit (-14>>>2, 11111111 11111111 11111111 11110010 digeser ke kanan dua bit menjadi 00111111 11111111 11111111 11111100). select shiftrightunsigned(-14,2); -- Nilai kembali adalah NULL. select shiftrightunsigned(-14,null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mengembalikan nilai pergeseran kanan tanpa tanda dari kolom int_data dan bigint_data.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+---------------------+ | int_new | bigint_new | +------------+---------------------+ | NULL | 9223372036854775803 | | 2147483638 | NULL | | 0 | 9223372036854775807 | | 2147483628 | 2 | | 2 | 9223372036854775783 | | 2147483618 | 3 | | 2147483647 | 9223372036854775773 | | 2147483608 | 0 | | 4 | 9223372036854775763 | | 2147483598 | 5 | +------------+---------------------+
SIGN
Sintaksis
double sign(<number>)Deskripsi
Mendapatkan tanda dari parameter input. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:
Jika nilai dari number adalah bilangan positif, 1.0 dikembalikan.
Jika nilai dari number adalah bilangan negatif, -1.0 dikembalikan.
Jika nilai dari number adalah 0, 0.0 dikembalikan.
Jika nilai dari number adalah NULL, NULL dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah -1.0. select sign(-2.5); -- Nilai kembali adalah 1.0. select sign(2.5); -- Nilai kembali adalah 0.0. select sign(0); -- Nilai kembali adalah NULL. select sign(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut mendapatkan tanda dari semua kolom.
-- Aktifkan tipe data baru dari MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL. set odps.sql.type.system.odps2=true; select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------+------------+------------+-------------+------------+------------+ | NULL | -1.0 | 1.0 | 1 | 1.0 | 1.0 | | -1.0 | NULL | -1.0 | -1 | -1.0 | -1.0 | | 0.0 | -1.0 | NULL | 1 | -1.0 | 1.0 | | -1.0 | 1.0 | 1.0 | NULL | 1.0 | -1.0 | | 1.0 | -1.0 | -1.0 | -1 | NULL | 1.0 | | -1.0 | 1.0 | 1.0 | 1 | 1.0 | -1.0 | | -1.0 | -1.0 | -1.0 | -1 | -1.0 | NULL | | 1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | | 1.0 | -1.0 | 1.0 | 1 | 1.0 | 0.0 | | -1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | +------------+------------+------------+-------------+------------+------------+
SIN
Sintaksis
double|decimal sin(<number>)Deskripsi
Menghitung sinus dari number. Nilai input dalam radian.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah -0.3048106211022167. select sin(60); -- Nilai kembali adalah NULL. select sin(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung sinus dari kolom.
select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;Hasil berikut telah dikembalikan.
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | 0.5440211108893698 | 0.5012130046737979 | 0.5012130046737979 | -0.5440211108893698 | | NULL | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698 | | -0.8414709848078965 | NULL | 0.9995605376022045 | -0.9880316240928618 | | -0.7568024953079282 | 0.7770717475268238 | NULL | 0.9880316240928618 | | 0.26237485370392877 | -0.8414709848078965 | -0.8414709848078965 | -0.26237485370392877 | | -0.27941549819892586 | 0.9974949866040544 | 0.9974949866040544 | 0.26237485370392877 | | -0.7738906815578891 | -0.9379999767747389 | -0.9379999767747389 | NULL | | 0.8414709848078965 | 0.6998746875935423 | 0.6998746875935423 | -0.8414709848078965 | | -0.8939966636005579 | 0.5325349075556212 | 0.5325349075556212 | 0.0 | | -0.5440211108893698 | 0.46460217941375737 | 0.46460217941375737 | -0.8939966636005579 | +----------------------+----------------------+----------------------+----------------------+
SINH
Sintaksis
double|decimal sinh(<number>)Deskripsi
Menghitung sinus hiperbolik dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 5.343237290762231E12. select sinh(30); -- Nilai kembali adalah NULL. select sinh(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung sinus hiperbolik dari kolom.
select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------------------+----------------------+----------------------+-----------------------+ | bigint_new | double_new | decimal_new | string_new | +------------------------+----------------------+----------------------+-----------------------+ | -11013.232874703393 | 0.5494517420061382 | 0.5494517420061382 | 11013.232874703393 | | NULL | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393 | | -1.1752011936438014 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.28991719712775 | 1.0122369492687646 | NULL | -5343237290762.231 | | -2.592352764293536e21 | -1.1752011936438014 | -1.1752011936438014 | 2.592352764293536e21 | | 201.71315737027922 | 2.1292794550948173 | 2.1292794550948173 | -2.592352764293536e21 | | -1.2577193354595834e30 | -904.0209306858466 | -904.0209306858466 | NULL | | 1.1752011936438014 | -13451.593018563612 | -13451.593018563612 | -1.1752011936438014 | | -6.102016471589204e38 | 6.560682077817757 | 6.560682077817757 | 0.0 | | 11013.232874703393 | -165.1482661774516 | -165.1482661774516 | -6.102016471589204e38 | +------------------------+----------------------+----------------------+-----------------------+
SQRT
Sintaksis
double|decimal sqrt(<number>)Deskripsi
Menghitung akar kuadrat dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Nilainya harus lebih besar dari 0. Jika nilainya kurang dari 0, NULL akan dikembalikan. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 2.0. select sqrt(4); -- Nilai kembali adalah NULL. select sqrt(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung akar kuadrat dari kolom.
select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+--------------------+--------------------+-------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+--------------------+-------------------+--------------------+ | NULL | 0.724568837309472 | 0.724568837309472 | 3.1622776601683795 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.522167621838006 | 5.477225575051661 | | 2.0 | 0.9433981132056604 | NULL | NULL | | NULL | NULL | NULL | 7.0710678118654755 | | 2.449489742783178 | 1.224744871391589 | 1.224744871391589 | NULL | | NULL | NULL | NULL | NULL | | 1.0 | NULL | NULL | NULL | | NULL | 1.606237840420901 | 1.606237840420901 | 0.0 | | 3.1622776601683795 | NULL | NULL | NULL | +--------------------+--------------------+-------------------+--------------------+
TAN
Sintaksis
double|decimal tan(<number>)Deskripsi
Menghitung tangen dari number. Nilai input dalam radian.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah -6.405331196646276. select tan(30); -- Nilai kembali adalah NULL. select tan(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung tangen dari kolom.
select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | -0.6483608274590866 | 0.5792200822893652 | 0.5792200822893652 | 0.6483608274590866 | | NULL | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866 | | -1.5574077246549023 | NULL | -33.71948732190433 | -6.405331196646276 | | 1.1578212823495775 | 1.2345994590490046 | NULL | 6.405331196646276 | | 0.27190061199763077 | -1.5574077246549023 | -1.5574077246549023 | -0.27190061199763077 | | -0.29100619138474915 | 14.101419947171719 | 14.101419947171719 | 0.27190061199763077 | | -1.2219599181369434 | -2.706013866772691 | -2.706013866772691 | NULL | | 1.5574077246549023 | -0.979852083895097 | -0.979852083895097 | -1.5574077246549023 | | 1.995200412208242 | -0.6291704256385503 | -0.6291704256385503 | 0.0 | | 0.6483608274590866 | 0.5246662219468002 | 0.5246662219468002 | 1.995200412208242 | +----------------------+----------------------+----------------------+----------------------+
TANH
Sintaksis
double|decimal tanh(<number>)Deskripsi
Menghitung tangen hiperbolik dari number.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
Contoh data statis
-- Nilai kembali adalah 1.0. select tanh(30); -- Nilai kembali adalah NULL. select tanh(null);Contoh data tabel
Berdasarkan data sampel, perintah berikut menghitung tangen hiperbolik dari kolom.
select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -0.9999999958776927 | 0.48154979836430806 | 0.48154979836430806 | 0.9999999958776927 | | NULL | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 | | -0.7615941559557649 | NULL | 1.0 | 1.0 | | 0.999329299739067 | 0.7113937318189625 | NULL | -1.0 | | -1.0 | -0.7615941559557649 | -0.7615941559557649 | 1.0 | | 0.9999877116507956 | 0.9051482536448664 | 0.9051482536448664 | -1.0 | | -1.0 | -0.9999993881955461 | -0.9999993881955461 | NULL | | 0.7615941559557649 | -0.9999999972367348 | -0.9999999972367348 | -0.7615941559557649 | | -1.0 | 0.9885821584459533 | 0.9885821584459533 | 0.0 | | 0.9999999958776927 | -0.9999816679925603 | -0.9999816679925603 | -1.0 | +---------------------+----------------------+----------------------+---------------------+
TRUNC
Sintaksis
double|decimal trunc(<number>[, bigint <decimal_places>])Deskripsi
Memotong nilai input number ke tempat desimal tertentu.
CatatanDalam mode kompatibel Hive, fungsi ini digunakan untuk konversi tanggal alih-alih sebagai fungsi matematika. Untuk informasi lebih lanjut tentang fungsi tanggal yang sesuai, lihat DATETRUNC. Anda dapat menyetel versi tipe data untuk proyek MaxCompute sesuai kebutuhan. Untuk informasi lebih lanjut tentang versi tipe data, lihat Versi Tipe Data.
Parameter
number: Diperlukan. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, maka akan dikonversi secara implisit menjadi nilai bertipe DOUBLE untuk perhitungan.
decimal_places: Opsional. Konstanta bertipe BIGINT. Parameter ini menentukan jumlah tempat desimal yang ingin dipotong. Jika parameter ini dihilangkan, nilai dipotong ke bilangan bulat terdekat. Nilai dari decimal_places bisa berupa bilangan negatif. Jika nilainya negatif, fungsi memotong digit di sebelah kiri titik desimal dan tidak mempertahankan bagian desimal. Jika nilai dari decimal_places lebih besar dari panjang bagian integer, 0 akan dikembalikan.
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai akan dikembalikan.
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE akan dikembalikan.
Jika tipe data dari decimal_places bukan BIGINT, kesalahan akan dikembalikan.
Jika nilai dari number atau decimal_places adalah NULL, NULL akan dikembalikan.
CatatanJika nilai bertipe DOUBLE dikembalikan, hasilnya mungkin tidak seperti yang diharapkan. Misalnya,
trunc(125.815,1). Masalah tampilan untuk tipe DOUBLE ini ada di semua sistem.Bagian yang dipotong dilengkapi dengan nol.
Contoh
Contoh data statis
-- Nilai kembali adalah 125.0. select trunc(125.815,0); -- Nilai kembali adalah 125.80000000000001. select trunc(125.815,1); -- Nilai kembali adalah 125.81. select trunc(125.815,2); -- Nilai kembali adalah 125.815. select trunc(125.815,3); -- Nilai kembali adalah -125.81. select trunc(-125.815,2); -- Nilai kembali adalah 120.0. select trunc(125.815,-1); -- Nilai kembali adalah 100.0. select trunc(125.815,-2); -- Nilai kembali adalah 0.0. select trunc(125.815,-3); -- Nilai kembali adalah 123.345. select trunc(123.345,4); -- Nilai kembali adalah 0.0. select trunc(123.345,-4); -- Nilai kembali adalah NULL. select trunc(123.345,null);Contoh data tabel
Berdasarkan data sampel, perintah berikut memotong nilai dalam kolom ke tempat desimal tertentu.
select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;Hasil berikut dikembalikan.
+------------+---------------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+---------------------+-------------+------------+ | -10.0 | 0.5 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.4 | 30.0 | | 4.0 | 0.8 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.200000000000001 | -10.2 | -1.0 | | -90.0 | 2.5 | 2.5 | 0.0 | | 10.0 | -5.800000000000001 | -5.8 | -90.0 | +------------+---------------------+-------------+------------+
UNHEX
Sintaksis
binary unhex(string <number>)Deskripsi
Mengembalikan string yang direpresentasikan oleh string heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
number: Diperlukan. String heksadesimal.
Nilai Kembali
Nilai bertipe BINARY dikembalikan. Aturan berikut berlaku:
Jika nilai dari number adalah 0, kesalahan akan dikembalikan.
Jika nilai dari number adalah NULL, NULL akan dikembalikan.
Contoh
-- Nilai kembali adalah abc. select unhex('616263'); -- Nilai kembali adalah abc. select unhex(616263); -- Nilai kembali adalah NULL. select unhex(null);
WIDTH_BUCKET
Sintaksis
width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)Deskripsi
Fungsi ini membuat sejumlah kelompok berukuran sama berdasarkan nilai minimum, maksimum, dan jumlah kelompok yang ditentukan. Fungsi ini mengembalikan nomor kelompok di mana nilai bidang tertentu termasuk. Tipe data yang didukung adalah BIGINT, INT, FLOAT, DOUBLE, DECIMAL, dan DECIMAL(presisi, skala) dari MaxCompute V2.0. Untuk informasi lebih lanjut, lihat Edisi Tipe Data di MaxCompute V2.0. Fungsi ini adalah fungsi ekstensi di MaxCompute V2.0.
Parameter
expr: Diperlukan. Bidang yang nomor kelompoknya ingin Anda tentukan.
min_value: Diperlukan. Nilai minimum dari rentang kelompok.
max_value: Diperlukan. Nilai maksimum dari rentang kelompok. Nilai maksimum harus lebih besar dari nilai minimum.
num_buckets: Diperlukan. Jumlah kelompok. Nilainya harus lebih besar dari 0.
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Nilainya berkisar dari 0 hingga jumlah kelompok yang ditentukan plus 1. Nilai dikembalikan berdasarkan aturan berikut:
Jika nilai dari expr kurang dari nilai dari min_value, 0 dikembalikan.
Jika nilai dari expr lebih besar dari nilai dari max_value, jumlah kelompok yang ditentukan plus 1 dikembalikan.
Jika nilai dari expr adalah NULL, NULL dikembalikan. Dalam kasus lain, nomor kelompok di mana nilai bidang tersebut termasuk dikembalikan. Nomor kelompok dihitung menggunakan rumus berikut:
floor(num_buckets * (expr - min_value)/(max_value - min_value) + 1).Jika nilai dari min_value, max_value, atau num_buckets adalah NULL, NULL dikembalikan.
Contoh
Contoh 1: Tidak ada parameter input yang bernilai NULL. Perintah contoh:
select key,value,width_bucket(value,100,500,5) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);Hasil berikut dikembalikan.
+-------+--------+-------------+ | key | value | value_group | +-------+--------+-------------+ | 1 | 99 | 0 | | 2 | 100 | 1 | | 3 | 199 | 2 | | 4 | 200 | 2 | | 5 | 499 | 5 | | 6 | 500 | 6 | | 7 | 501 | 6 | | 8 | NULL | NULL | +-------+--------+-------------+Contoh 2: Salah satu parameter input adalah NULL. Perintah contoh:
select key,value,width_bucket(value,100,500,null) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);Hasil berikut dikembalikan.
+------+-------+-------------+ | key | value | value_group | +------+-------+-------------+ | 1 | 99 | NULL | | 2 | 100 | NULL | | 3 | 199 | NULL | | 4 | 200 | NULL | | 5 | 499 | NULL | | 6 | 500 | NULL | | 7 | 501 | NULL | | 8 | NULL | NULL | +------+-------+-------------+
Referensi
Jika fungsi bawaan sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menggunakan fungsi yang ditentukan pengguna (UDF) di MaxCompute. Untuk informasi lebih lanjut tentang UDF, lihat Gambaran Umum UDF MaxCompute.
Untuk informasi lebih lanjut tentang FAQ untuk MaxCompute SQL, lihat:
Untuk informasi lebih lanjut tentang kode kesalahan umum dan FAQ untuk fungsi bawaan MaxCompute, lihat: