全部产品
Search
文档中心

MaxCompute:Fungsi Matematika

更新时间:Nov 03, 2025

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

ABS

Menghitung nilai absolut.

ACOS

Menghitung arccosinus.

ATAN2

Menghitung arctangen dari expr1/expr2.

ASIN

Menghitung arcsinus.

ATAN

Menghitung arctangen.

BIN

Menghitung nilai biner.

BIT_COUNT

Menghitung jumlah angka 1 dalam representasi biner dari parameter tertentu value.

CBRT

Menghitung akar pangkat tiga.

CEIL

Membulatkan nilai ke atas.

CONV

Mengonversi angka dari satu basis ke basis lainnya.

CORR

Menghitung koefisien korelasi Pearson.

COS

Menghitung kosinus.

COSH

Menghitung kosinus hiperbolik.

COT

Menghitung kotangen.

DEGREES

Mengonversi radian ke derajat.

E

Mengembalikan nilai e.

EXP

Menghitung nilai eksponensial.

FACTORIAL

Menghitung faktorial.

FILTER

Menyaring elemen dalam array ARRAY.

FLOOR

Membulatkan nilai ke bawah.

FORMAT_NUMBER

Mengonversi angka menjadi string dalam format tertentu.

GREATEST

Membandingkan sekumpulan nilai dan mengembalikan nilai maksimum.

HEX

Mengembalikan format heksadesimal dari integer atau string.

ISNAN

Memeriksa apakah nilai ekspresi adalah NaN.

LEAST

Membandingkan sekumpulan nilai dan mengembalikan nilai minimum.

LN

Menghitung logaritma natural.

LOG

Menghitung logaritma.

LOG10

Menghitung logaritma desimal.

LOG2

Menghitung logaritma biner.

NEGATIVE

Mengembalikan nilai negatif dari sebuah ekspresi.

PI

Mengembalikan nilai π.

POSITIVE

Mengembalikan nilai dari sebuah ekspresi.

POW

Menghitung pangkat.

RADIANS

Mengonversi derajat ke radian.

RAND

Mengembalikan bilangan acak.

ROUND

Mengembalikan nilai yang dibulatkan ke tempat desimal tertentu.

SHIFTLEFT

Menghitung nilai pergeseran kiri.

SHIFTRIGHT

Menghitung nilai pergeseran kanan.

SHIFTRIGHTUNSIGNED

Menghitung nilai pergeseran kanan tanpa tanda.

SIGN

Mengembalikan tanda dari parameter input.

SIN

Menghitung sinus.

SINH

Menghitung sinus hiperbolik.

SQRT

Menghitung akar kuadrat.

TAN

Menghitung tangen.

TANH

Menghitung tangen hiperbolik.

TRUNC

Mengembalikan nilai yang dipotong ke tempat desimal tertentu.

UNHEX

Mengembalikan string yang direpresentasikan oleh string heksadesimal.

WIDTH_BUCKET

Mengembalikan nomor bucket di mana nilai bidang tertentu jatuh.

Catatan

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.

    Catatan

    Jika 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.

    Catatan
    • Jika 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. T dalam array<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);
    Catatan

    Dalam 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.

    Catatan

    Anda 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.

      Catatan

      Nilai 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.

    Catatan

    Dalam 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.

    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 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