Topik ini menjelaskan fungsi matematika yang didukung oleh MaxCompute, mencakup sintaks, deskripsi parameter, dan contoh penggunaan untuk setiap fungsi. Fungsi-fungsi ini memungkinkan Anda melakukan berbagai operasi, seperti komputasi dan konversi data.
Tabel berikut mencantumkan fungsi matematika yang didukung oleh SQL MaxCompute.
|
Function |
Feature |
|
Menghitung nilai absolut. |
|
|
Menghitung arccosine. |
|
|
Menghitung arctangent dari expr1/expr2. |
|
|
Menghitung arcsine. |
|
|
Menghitung arctangent. |
|
|
Menghitung nilai biner. |
|
|
Menghitung jumlah angka 1 dalam representasi biner dari parameter yang ditentukan |
|
|
Menghitung akar pangkat tiga. |
|
|
Membulatkan ke atas suatu nilai. |
|
|
Mengonversi angka dari satu basis ke basis lainnya. |
|
|
Menghitung koefisien korelasi Pearson. |
|
|
Menghitung cosine. |
|
|
Menghitung hyperbolic cosine. |
|
|
Menghitung cotangent. |
|
|
Mengonversi radian ke derajat. |
|
|
Mengembalikan nilai e. |
|
|
Menghitung nilai eksponensial. |
|
|
Menghitung faktorial. |
|
|
Menyaring elemen dalam array ARRAY. |
|
|
Membulatkan ke bawah suatu nilai. |
|
|
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 suatu ekspresi. |
|
|
Mengembalikan nilai π. |
|
|
Mengembalikan nilai dari suatu ekspresi. |
|
|
Menghitung pangkat. |
|
|
Mengonversi derajat ke radian. |
|
|
Mengembalikan bilangan acak. |
|
|
Mengembalikan nilai yang dibulatkan ke tempat desimal tertentu. |
|
|
Menghitung nilai left shift. |
|
|
Menghitung nilai right shift. |
|
|
Menghitung nilai unsigned right shift. |
|
|
Mengembalikan tanda dari parameter input. |
|
|
Menghitung sine. |
|
|
Menghitung hyperbolic sine. |
|
|
Menghitung akar kuadrat. |
|
|
Menghitung tangent. |
|
|
Menghitung hyperbolic tangent. |
|
|
Mengembalikan nilai yang dipotong ke tempat desimal tertentu. |
|
|
Mengembalikan string yang direpresentasikan oleh string heksadesimal. |
|
|
Mengembalikan nomor bucket tempat nilai bidang tertentu berada. |
Untuk informasi lebih lanjut tentang perhitungan, seperti menghitung sisa bagi, lihat Operators.
Catatan penggunaan
MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute V2.0, Anda harus mengeksekusi pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru tersebut meliputi 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 dieksekusi, lalu kirim dan eksekusi bersama-sama.Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkannya di tingkat proyek, jalankan perintah berikut:
setproject odps.sql.type.system.odps2=true;Untuk informasi lebih lanjut tentang
setproject, lihat Project operations. Untuk informasi lebih lanjut tentang hal-hal yang perlu diperhatikan saat mengaktifkan edisi tipe data MaxCompute V2.0 di tingkat proyek, lihat Data type version guide.
Data sampel
Untuk membantu Anda 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
-
Sintaks
bigint|double|decimal abs(<number>) -
Deskripsi
Menghitung nilai absolut dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE, BIGINT, atau DECIMAL. Jika nilai input bertipe STRING, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
CatatanJika nilai input bertipe BIGINT dan melebihi rentang nilai BIGINT, nilai tersebut dikonversi ke tipe DOUBLE. Konversi ini dapat menyebabkan kehilangan 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 dikembalikan.
-
Jika number bertipe STRING, nilai bertipe DOUBLE dikembalikan.
-
Jika number bernilai NULL, NULL 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 bidang id dalam tabel tbl1. Kode berikut memberikan contoh lengkap 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
-
Sintaks
double|decimal acos(<number>) -
Deskripsi
Menghitung arccosine dari number.
-
Parameter
number: Wajib. Nilai dalam rentang [-1, 1]. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
Tipe data nilai kembali sama dengan tipe data parameter input. Nilai berada dalam rentang 0 hingga π. Aturan berikut berlaku:
-
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number tidak berada dalam rentang [-1, 1], NULL dikembalikan. Dalam mode Hive-compatible, NaN dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 arccosine.
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
-
Sintaks
double atan2(<expr1>, <expr2>) -
Deskripsi
Menghitung arctangent dari expr1/expr2.
-
Parameter
-
expr1: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
expr2: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Nilai berada dalam rentang
-π/2 hingga π/2. Jika nilai expr1 atau expr2 adalah NULL, NULL dikembalikan. -
Contoh
--Nilai kembali adalah 0.0. select atan2(0, 0);
ASIN
-
Sintaks
double|decimal asin(<number>) -
Deskripsi
Menghitung arcsine dari number.
-
Parameter
number: Wajib. Nilai dalam rentang [-1, 1]. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
Tipe data nilai kembali sama dengan tipe data parameter input. Nilai berada dalam rentang
-π/2 hingga π/2. Aturan berikut berlaku:-
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number tidak berada dalam rentang [-1, 1], NULL dikembalikan. Dalam mode Hive-compatible, NaN dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 arcsine.
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
-
Sintaks
double atan(<number>) -
Deskripsi
Menghitung arctangent dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Nilai berada dalam rentang
-π/2 hingga π/2. Jika nilai number adalah NULL, NULL 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 arctangent.
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
-
Sintaks
string bin(<number>) -
Deskripsi
Mengembalikan representasi biner dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. 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 dikembalikan.
-
Jika nilai number adalah 0, 0 dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 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
-
Sintaks
double cbrt(<number>) -
Deskripsi
Menghitung akar pangkat tiga dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. 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 dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 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
-
Sintaks
bigint ceil(<value>) -
Deskripsi
Membulatkan nilai ke atas. Fungsi ini mengembalikan bilangan bulat terkecil yang tidak kurang dari nilai input value.
-
Parameter
value: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Jika nilai value adalah NULL, NULL 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
-
Sintaks
STRING CONV(<input>, BIGINT <from_base>, BIGINT <to_base>) -
Deskripsi
Fungsi ini mengonversi angka dari satu basis ke basis lainnya dan mengembalikan hasilnya sebagai string.
-
Parameter
Parameter
Wajib
Deskripsi
input
Ya
Nilai bertipe STRING.
Catatan-
Jika proyek Anda berada dalam mode Hive-compatible, artinya Anda telah menjalankan perintah
set odps.sql.hive.compatible=true;, konversi implisit nilai BIGINT dan DOUBLE didukung. -
Jika proyek Anda tidak berada dalam mode Hive-compatible, artinya 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 dikembalikan.
-
Konversi dilakukan dengan presisi 64-bit. Jika terjadi overflow, NULL dikembalikan.
-
Jika nilai input input bertipe BIGINT atau DOUBLE, NULL dikembalikan dalam mode non-Hive-compatible karena konversi implisit tidak didukung.
-
Jika nilai input input bernilai negatif, NULL dikembalikan dalam mode non-Hive-compatible. Dalam mode Hive-compatible, 0 dikembalikan.
-
Jika nilai input input berupa desimal, NULL dikembalikan dalam mode non-Hive-compatible. Dalam mode Hive-compatible, nilai tersebut dikonversi menjadi bilangan bulat lalu 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
-
Sintaks
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: Wajib. Nama dua kolom dalam tabel yang ingin Anda hitung koefisien korelasi Pearsons-nya. Kolom harus bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, atau DECIMAL. Tipe data col1 dan col2 dapat 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
-
Sintaks
double|decimal cos(<number>) -
Deskripsi
Menghitung cosine dari number. Nilai input dalam radian.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 cosine.
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
-
Sintaks
double|decimal cosh(<number>) -
Deskripsi
Menghitung hyperbolic cosine dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 hyperbolic cosine.
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
-
Sintaks
double|decimal cot(<number>) -
Deskripsi
Menghitung cotangent dari number. Nilai input dalam radian.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 cotangent.
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
-
Sintaks
double degrees(<number>) -
Deskripsi
Mengonversi nilai dari radian ke derajat.
-
Parameter
number: Wajib. 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 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 untuk semua kolom.
--Aktifkan tipe data baru MaxCompute V2.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
-
Sintaks
double e() -
Deskripsi
Mengembalikan nilai
e. Ini adalah fungsi ekstensi di MaxCompute V2.0. -
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan.
-
Contoh
--Nilai kembali adalah 2.718281828459045. select e();
EXP
-
Sintaks
double|decimal exp(<number>) -
Deskripsi
Menghitung nilai eksponensial dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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
-
Sintaks
bigint factorial(<number>) -
Deskripsi
Mengembalikan faktorial dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. Nilai bertipe BIGINT, INT, SMALLINT, atau TINYINT. Nilai harus berada dalam rentang [0, 20].
-
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Aturan berikut berlaku:
-
Jika nilai number adalah 0, 1 dikembalikan.
-
Jika nilai number adalah NULL atau tidak berada dalam rentang [0, 20], NULL 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 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
-
Sintaks
array<T> filter(array<T> <a>, function<T,boolean> <func>) -
Parameter
-
a:Wajib. Array ARRAY.
array<T>padaTmerepresentasikan tipe data elemen array ARRAY, elemen dalam array dapat bertipe apa saja. -
func:Wajib. Fungsi (fungsi bawaan atau user-defined function) atau ekspresi yang digunakan untuk menyaring elemen dalam a, tipe parameter input harus sama dengan tipe data elemen dalam a, tipe data hasil keluarannya adalah BOOLEAN.
-
-
Nilai Kembali
Mengembalikan tipe ARRAY.
-
Contoh
--Mengembalikan [2, 3]. select filter(array(1, 2, 3), x -> x > 1);CatatanUntuk informasi lebih lanjut tentang fungsi Lambda
->, lihat Lambda functions.
FLOOR
-
Sintaks
bigint floor(<number>) -
Deskripsi
Membulatkan nilai ke bawah. Fungsi ini mengembalikan bilangan bulat terbesar yang tidak lebih besar dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Jika nilai number adalah NULL, NULL 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
-
Sintaks
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: Wajib. Data yang akan diformat. Nilai dapat bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
-
expr2: Wajib. 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 dikembalikan.
-
Jika nilai expr1 atau expr2 adalah NULL, NULL 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 jumlah tempat desimal tertentu untuk semua kolom.
--Aktifkan tipe data baru 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
-
Sintaks
string hex(<number>) -
Deskripsi
Mengonversi nilai numerik atau string ke format heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. 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 dikembalikan.
-
Jika nilai number adalah 0, 0 dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 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
-
Sintaks
boolean isnan(<expr>) -
Deskripsi
Memeriksa apakah nilai expr adalah NaN.
-
Parameter
expr: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
Nilai Kembali
-
Jika nilai expr adalah NaN, True dikembalikan. Jika tidak, False dikembalikan.
-
Jika nilai expr adalah NULL, False dikembalikan.
-
-
Contoh
--Nilai kembali adalah False. SELECT isnan(100.1);
LN
-
Sintaks
double|decimal ln(<number>) -
Deskripsi
Menghitung logaritma natural dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number bernilai negatif atau 0, NULL dikembalikan.
-
Jika nilai number adalah NULL, NULL 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
-
Sintaks
double log(<base>, <x>) -
Deskripsi
Menghitung logaritma dari x dengan basis base.
-
Parameter
-
base: Wajib. Basis. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
x: Wajib. Nilai yang ingin Anda hitung logaritmanya. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:
-
Jika nilai base atau x adalah NULL, NULL dikembalikan.
-
Jika nilai base atau x bernilai negatif atau 0, NULL dikembalikan.
-
Jika nilai base adalah 1, yang menyebabkan kesalahan pembagian dengan nol, NULL 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
-
Sintaks
double log10(<number>) -
Deskripsi
Mengembalikan logaritma basis-10 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bernilai negatif, atau NULL, NULL 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 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 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
-
Sintaks
double log2(<number>) -
Deskripsi
Mengembalikan logaritma basis-2 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bernilai negatif, atau NULL, NULL 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 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
-
Sintaks
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>) -
Deskripsi
Mengembalikan nilai negatif dari expr.
-
Parameter
expr: Wajib. Ekspresi input. Nilai dapat 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
-
Sintaks
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
-
Sintaks
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>) -
Deskripsi
Mengembalikan nilai dari expr.
-
Parameter
expr: Wajib. Ekspresi input. Nilai dapat bertipe TINYINT, SMALLINT, INT, BIGINT, DOUBLE, atau DECIMAL.
-
Nilai Kembali
Mengembalikan nilai dari ekspresi expr.
-
Contoh
--Nilai kembali adalah 1. SELECT positive(1);
POW
-
Sintaks
double|decimal pow(<x>, <y>) -
Deskripsi
Menghitung nilai x pangkat y, yaitu
x^y. -
Parameter
-
x: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
y: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika x atau y bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai x atau y adalah NULL, NULL 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
-
Sintaks
double radians(<number>) -
Deskripsi
Mengonversi nilai dari derajat ke radian. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah NULL, NULL 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 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
-
Sintaks
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 fungsi ini tetap. Jika lingkungan eksekusi dan nilai seed tetap sama, nilai kembalinya juga sama. Untuk mendapatkan hasil yang berbeda, Anda harus mengubah nilai seed.
Anda dapat menambahkan parameter berikut sebelum pernyataan SQL. Nilai default adalah
false.set odps.sql.executionengine.enable.rand.time.seed=true|false;-
Jika parameter ini diatur ke
false, fungsi RAND menggunakan ID instans saat ini sebagai seed awal untuk bilangan acak guna memastikan idempotensi fungsi. -
Jika parameter ini diatur 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 kunci shuffle. Hal ini menyebabkan hasil yang berbeda ketika 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
-
Sintaks
double|decimal round(<number>[, bigint <decimal_places>]) -
Deskripsi
Membulatkan nilai ke tempat desimal tertentu.
-
Parameter
-
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 default adalah 0.
CatatanNilai decimal_places dapat berupa bilangan negatif. Jika nilainya negatif, fungsi membulatkan digit di sebelah kiri titik desimal dan tidak mempertahankan bagian desimal. Jika nilai decimal_places lebih besar daripada panjang bagian bilangan bulat, 0 dikembalikan.
-
-
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
-
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika tipe data decimal_places bukan BIGINT, kesalahan dikembalikan.
-
Jika nilai number atau decimal_places adalah NULL, NULL 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 NULL. select round(null); --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
-
Sintaks
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>) -
Deskripsi
Menjalankan left shift (<<). Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
-
number1: Wajib. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.
-
number2: Wajib. Nilai bertipe INT.
-
-
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
-
Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.
-
Jika tipe data number2 bukan INT, kesalahan dikembalikan.
-
Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.
-
-
Contoh
-
Contoh data statis
--Nilai kembali adalah 4. Nilai biner 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 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 menjalankan left shift pada kolom int_data dan bigint_data.
--Aktifkan tipe data baru 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
-
Sintaks
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>) -
Deskripsi
Menjalankan right shift (>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
-
number1: Wajib. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.
-
number2: Wajib. Nilai bertipe INT.
-
-
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
-
Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.
-
Jika tipe data number2 bukan INT, kesalahan dikembalikan.
-
Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.
-
-
Contoh
-
Contoh data statis
--Nilai kembali adalah 1. Nilai biner 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 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 menjalankan right shift pada kolom int_data dan bigint_data.
--Aktifkan tipe data baru 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
-
Sintaks
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>) -
Deskripsi
Menjalankan unsigned right shift (>>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
-
number1: Wajib. Bilangan bulat bertipe TINYINT, SMALLINT, INT, atau BIGINT.
-
number2: Wajib. Bilangan bulat bertipe INT.
-
-
Nilai Kembali
Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:
-
Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.
-
Jika tipe data number2 bukan INT, kesalahan dikembalikan.
-
Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.
-
-
Contoh
-
Contoh data statis
--Nilai kembali adalah 2. Nilai biner 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 -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 unsigned right shift dari kolom int_data dan bigint_data.
--Aktifkan tipe data baru 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
-
Sintaks
double sign(<number>) -
Deskripsi
Mendapatkan tanda dari parameter input. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.
-
Nilai Kembali
Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:
-
Jika nilai number bernilai positif, 1.0 dikembalikan.
-
Jika nilai number bernilai negatif, -1.0 dikembalikan.
-
Jika nilai number adalah 0, 0.0 dikembalikan.
-
Jika nilai 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 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
-
Sintaks
double|decimal sin(<number>) -
Deskripsi
Menghitung sine dari number. Nilai input dalam radian.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 sine 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 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
-
Sintaks
double|decimal sinh(<number>) -
Deskripsi
Menghitung hyperbolic sine dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 hyperbolic sine 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
-
Sintaks
double|decimal sqrt(<number>) -
Deskripsi
Menghitung akar kuadrat dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Nilai harus lebih besar dari 0. Jika nilainya kurang dari 0, NULL dikembalikan. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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
-
Sintaks
double|decimal tan(<number>) -
Deskripsi
Menghitung tangent dari number. Nilai input dalam radian.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 tangent 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
-
Sintaks
double|decimal tanh(<number>) -
Deskripsi
Menghitung hyperbolic tangent dari number.
-
Parameter
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi 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 dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika nilai number adalah NULL, NULL 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 hyperbolic tangent 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
-
Sintaks
double|decimal trunc(<number>[, bigint <decimal_places>]) -
Deskripsi
Memotong nilai input number ke tempat desimal tertentu.
CatatanDalam mode Hive-compatible, fungsi ini digunakan untuk konversi tanggal alih-alih sebagai fungsi matematika. Untuk informasi lebih lanjut tentang fungsi tanggal yang sesuai, lihat DATETRUNC. Anda dapat mengatur versi tipe data untuk proyek MaxCompute Anda sesuai kebutuhan. Untuk informasi lebih lanjut tentang versi tipe data, lihat Data type versions.
-
Parameter
-
number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.
-
decimal_places: Opsional. Konstanta bertipe BIGINT. Parameter ini menentukan jumlah tempat desimal yang ingin Anda potong. Jika Anda menghilangkan parameter ini, nilai dipotong ke bilangan bulat terdekat. Nilai decimal_places dapat berupa bilangan negatif. Jika nilainya negatif, fungsi memotong dari titik desimal ke kiri dan tidak mempertahankan bagian desimal. Jika nilai decimal_places lebih besar daripada panjang bagian bilangan bulat, 0 dikembalikan.
-
-
Nilai Kembali
Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:
-
Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.
-
Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.
-
Jika tipe data decimal_places bukan BIGINT, kesalahan dikembalikan.
-
Jika nilai number atau decimal_places adalah NULL, NULL dikembalikan.
Catatan-
Jika 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 diisi 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
-
Sintaks
binary unhex(string <number>) -
Deskripsi
Mengembalikan string yang direpresentasikan oleh string heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
number: Wajib. String heksadesimal.
-
Nilai Kembali
Nilai bertipe BINARY dikembalikan. Aturan berikut berlaku:
-
Jika nilai number adalah 0, kesalahan dikembalikan.
-
Jika nilai number adalah NULL, NULL 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
-
Sintaks
width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>) -
Deskripsi
Fungsi ini membangun sejumlah grup berukuran sama berdasarkan nilai minimum, nilai maksimum, dan jumlah grup yang ditentukan. Fungsi ini mengembalikan nomor grup tempat nilai bidang tertentu berada. Tipe data yang didukung adalah BIGINT, INT, FLOAT, DOUBLE, DECIMAL, dan DECIMAL(precision, scale) MaxCompute V2.0. Untuk informasi lebih lanjut, lihat Data type editions in MaxCompute V2.0. Fungsi ini adalah fungsi ekstensi di MaxCompute V2.0.
-
Parameter
-
expr: Wajib. Bidang yang ingin Anda tentukan nomor grupnya.
-
min_value: Wajib. Nilai minimum dari rentang grup.
-
max_value: Wajib. Nilai maksimum dari rentang grup. Nilai maksimum harus lebih besar dari nilai minimum.
-
num_buckets: Wajib. Jumlah grup. Nilai harus lebih besar dari 0.
-
-
Nilai Kembali
Nilai bertipe BIGINT dikembalikan. Nilai berkisar dari 0 hingga jumlah grup yang ditentukan ditambah 1. Nilai dikembalikan berdasarkan aturan berikut:
-
Jika nilai expr kurang dari nilai min_value, 0 dikembalikan.
-
Jika nilai expr lebih besar dari nilai max_value, jumlah grup yang ditentukan ditambah 1 dikembalikan.
-
Jika nilai expr adalah NULL, NULL dikembalikan. Dalam kasus lain, nomor grup tempat nilai bidang berada dikembalikan. Nomor grup dihitung menggunakan rumus berikut:
floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1). -
Jika nilai min_value, max_value, atau num_buckets adalah NULL, NULL dikembalikan.
-
-
Contoh
-
Contoh 1: Tidak ada parameter input yang bernilai NULL. Perintah sampel:
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 bernilai NULL. Perintah sampel:
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 di atas tidak memenuhi kebutuhan Anda, Anda dapat menggunakan user-defined function (UDF) di MaxCompute. Untuk informasi lebih lanjut tentang UDF, lihat MaxCompute UDF overview.
-
Untuk informasi lebih lanjut tentang FAQ untuk SQL MaxCompute, lihat:
-
Untuk informasi lebih lanjut tentang kode kesalahan umum dan FAQ untuk fungsi bawaan MaxCompute, lihat: