All Products
Search
Document Center

MaxCompute:Ikhtisar Fungsi Matematika

Last Updated:Jul 25, 2026

Topik ini menjelaskan fungsi matematika yang didukung oleh MaxCompute, mencakup sintaks, deskripsi parameter, dan contoh penggunaan untuk setiap fungsi. Fungsi-fungsi ini memungkinkan Anda melakukan berbagai operasi, seperti komputasi dan konversi data.

Tabel berikut mencantumkan fungsi matematika yang didukung oleh SQL MaxCompute.

Function

Feature

ABS

Menghitung nilai absolut.

ACOS

Menghitung arccosine.

ATAN2

Menghitung arctangent dari expr1/expr2.

ASIN

Menghitung arcsine.

ATAN

Menghitung arctangent.

BIN

Menghitung nilai biner.

BIT_COUNT

Menghitung jumlah angka 1 dalam representasi biner dari parameter yang ditentukan value.

CBRT

Menghitung akar pangkat tiga.

CEIL

Membulatkan ke atas suatu nilai.

CONV

Mengonversi angka dari satu basis ke basis lainnya.

CORR

Menghitung koefisien korelasi Pearson.

COS

Menghitung cosine.

COSH

Menghitung hyperbolic cosine.

COT

Menghitung cotangent.

DEGREES

Mengonversi radian ke derajat.

E

Mengembalikan nilai e.

EXP

Menghitung nilai eksponensial.

FACTORIAL

Menghitung faktorial.

FILTER

Menyaring elemen dalam array ARRAY.

FLOOR

Membulatkan ke bawah suatu nilai.

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 suatu ekspresi.

PI

Mengembalikan nilai π.

POSITIVE

Mengembalikan nilai dari suatu 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 left shift.

SHIFTRIGHT

Menghitung nilai right shift.

SHIFTRIGHTUNSIGNED

Menghitung nilai unsigned right shift.

SIGN

Mengembalikan tanda dari parameter input.

SIN

Menghitung sine.

SINH

Menghitung hyperbolic sine.

SQRT

Menghitung akar kuadrat.

TAN

Menghitung tangent.

TANH

Menghitung hyperbolic tangent.

TRUNC

Mengembalikan nilai yang dipotong ke tempat desimal tertentu.

UNHEX

Mengembalikan string yang direpresentasikan oleh string heksadesimal.

WIDTH_BUCKET

Mengembalikan nomor bucket tempat nilai bidang tertentu berada.

Catatan

Untuk informasi lebih lanjut tentang perhitungan, seperti menghitung sisa bagi, lihat Operators.

Catatan penggunaan

MaxCompute V2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute V2.0, Anda harus mengeksekusi pernyataan SET untuk mengaktifkan edisi tersebut. Tipe data baru tersebut meliputi TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.

  • Tingkat sesi: Untuk menggunakan edisi tipe data MaxCompute V2.0, tambahkan set odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang ingin dieksekusi, lalu kirim dan eksekusi bersama-sama.

  • Tingkat proyek: Pemilik proyek dapat mengaktifkan edisi tipe data MaxCompute V2.0 untuk seluruh proyek sesuai kebutuhan. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkannya di tingkat proyek, jalankan perintah berikut:

    setproject odps.sql.type.system.odps2=true; 

    Untuk informasi lebih lanjut tentang setproject, lihat Project operations. Untuk informasi lebih lanjut tentang hal-hal yang perlu diperhatikan saat mengaktifkan edisi tipe data MaxCompute V2.0 di tingkat proyek, lihat Data type version guide.

Data sampel

Untuk membantu Anda memahami cara menggunakan setiap fungsi, topik ini menyediakan data sumber dan contoh berdasarkan data tersebut. Perintah sampel berikut membuat tabel bernama mf_math_fun_t dan menambahkan data ke dalamnya.

create table if not exists mf_math_fun_t(
     int_data     int,
     bigint_data  bigint,
     double_data  double,
     decimal_data decimal,
     float_data   float,
     string_data  string
    );
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');

Perintah berikut mengambil data dari tabel mf_math_fun_t:

select * from mf_math_fun_t;
-- Hasil berikut dikembalikan.
+----------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+----------+-------------+-------------+--------------+------------+-------------+
| NULL     | -10         | 0.525       | 0.525        | 0.525      | 10          |
| -20      | NULL        | -0.1        | -0.1         | -0.1       | -10         |
| 0        | -1          | NULL        | 20.45        | -1         | 30          |
| -40      | 4           | 0.89        | NULL         | 0.89       | -30         |
| 5        | -50         | -1.0        | -1           | NULL       | 50          |
| -60      | 6           | 1.5         | 1.5          | 1.5        | -50         |
| -1       | -70         | -7.5        | -7.5         | -7.5       | NULL        |
| -80      | 1           | -10.2       | -10.2        | -10.2      | -1          |
| 9        | -90         | 2.58        | 2.58         | 2.58       | 0           |
| -100     | 10          | -5.8        | -5.8         | -5.8       | -90         |
+----------+-------------+-------------+--------------+------------+-------------+

ABS

  • Sintaks

    bigint|double|decimal abs(<number>)
  • Deskripsi

    Menghitung nilai absolut dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, atau DECIMAL. Jika nilai input bertipe STRING, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    Catatan

    Jika nilai input bertipe BIGINT dan melebihi rentang nilai BIGINT, nilai tersebut dikonversi ke tipe DOUBLE. Konversi ini dapat menyebabkan kehilangan presisi.

  • Nilai Kembali

    Tipe data nilai kembali sama dengan tipe data parameter input. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE, BIGINT, atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING, nilai bertipe DOUBLE dikembalikan.

    • Jika number bernilai NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah NULL.
      select abs(null);
      --Nilai kembali adalah 1.
      select abs(-1);
      --Nilai kembali adalah 1.2.
      select abs(-1.2);
      --Nilai kembali adalah 2.0.
      select abs("-2");
      --Nilai kembali adalah 1.2232083745629837e32.
      select abs(122320837456298376592387456923748);
      --Menghitung nilai absolut dari bidang id dalam tabel tbl1. Kode berikut memberikan contoh lengkap cara menggunakan fungsi ABS dalam pernyataan SQL. Fungsi bawaan lainnya, kecuali fungsi jendela dan fungsi agregat, digunakan dengan cara serupa.
      select abs(id) from tbl1;
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung nilai absolut.

      select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | 10         | 0.525      | 0.525       | 10.0       |
      | NULL       | 0.1        | 0.1         | 10.0       |
      | 1          | NULL       | 20.45       | 30.0       |
      | 4          | 0.89       | NULL        | 30.0       |
      | 50         | 1.0        | 1           | 50.0       |
      | 6          | 1.5        | 1.5         | 50.0       |
      | 70         | 7.5        | 7.5         | NULL       |
      | 1          | 10.2       | 10.2        | 1.0        |
      | 90         | 2.58       | 2.58        | 0.0        |
      | 10         | 5.8        | 5.8         | 90.0       |
      +------------+------------+-------------+------------+

ACOS

  • Sintaks

    double|decimal acos(<number>)
  • Deskripsi

    Menghitung arccosine dari number.

  • Parameter

    number: Wajib. Nilai dalam rentang [-1, 1]. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Tipe data nilai kembali sama dengan tipe data parameter input. Nilai berada dalam rentang 0 hingga π. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number tidak berada dalam rentang [-1, 1], NULL dikembalikan. Dalam mode Hive-compatible, NaN dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 0.5155940062460905.
      select acos("0.87");
      --Nilai kembali adalah 1.5707963267948966.
      select acos(0);
      --Nilai kembali adalah NULL.
      select acos(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung arccosine.

      select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +-------------------+--------------------+--------------------+---------------------+
      | bigint_new        | double_new         | decimal_new        | string_new          |
      +-------------------+--------------------+--------------------+---------------------+
      | NULL              | 1.0180812136981134 | 1.0180812136981134 | NULL                |
      | NULL              | 1.6709637479564565 | 1.6709637479564565 | NULL                |
      | 3.141592653589793 | NULL               | NULL               | NULL                |
      | NULL              | 0.4734511572720662 | NULL               | NULL                |
      | NULL              | 3.141592653589793  | 3.141592653589793  | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | NULL              | NULL               | NULL               | NULL                |
      | 0.0               | NULL               | NULL               | 3.141592653589793   |
      | NULL              | NULL               | NULL               | 1.5707963267948966  |
      | NULL              | NULL               | NULL               | NULL                |
      +-------------------+--------------------+--------------------+---------------------+

ATAN2

  • Sintaks

    double atan2(<expr1>, <expr2>)
  • Deskripsi

    Menghitung arctangent dari expr1/expr2.

  • Parameter

    • expr1: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    • expr2: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Nilai berada dalam rentang -π/2 hingga π/2. Jika nilai expr1 atau expr2 adalah NULL, NULL dikembalikan.

  • Contoh

    --Nilai kembali adalah 0.0.
    select atan2(0, 0);

ASIN

  • Sintaks

    double|decimal asin(<number>)
  • Deskripsi

    Menghitung arcsine dari number.

  • Parameter

    number: Wajib. Nilai dalam rentang [-1, 1]. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Tipe data nilai kembali sama dengan tipe data parameter input. Nilai berada dalam rentang -π/2 hingga π/2. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number tidak berada dalam rentang [-1, 1], NULL dikembalikan. Dalam mode Hive-compatible, NaN dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1.5707963267948966.
      select asin(1);
      --Nilai kembali adalah -1.5707963267948966.
      select asin(-1);
      --Nilai kembali adalah NULL.
      select asin(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung arcsine.

      select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+---------------------+---------------------+---------------------+
      | bigint_new         | double_new          | decimal_new         | string_new          |
      +--------------------+---------------------+---------------------+---------------------+
      | NULL               | 0.5527151130967832  | 0.5527151130967832  | NULL                |
      | NULL               | -0.1001674211615598 | -0.1001674211615598 | NULL                |
      | -1.5707963267948966| NULL                | NULL                | NULL                |
      | NULL               | 1.0973451695228305  | NULL                | NULL                |
      | NULL               | -1.5707963267948966 | -1.5707963267948966 | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | NULL               | NULL                | NULL                | NULL                |
      | 1.5707963267948966 | NULL                | NULL                | -1.5707963267948966 |
      | NULL               | NULL                | NULL                | 0.0                 |
      | NULL               | NULL                | NULL                | NULL                |
      +--------------------+---------------------+---------------------+---------------------+

ATAN

  • Sintaks

    double atan(<number>)
  • Deskripsi

    Menghitung arctangent dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Nilai berada dalam rentang -π/2 hingga π/2. Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 0.7853981633974483.
      select atan(1);
      --Nilai kembali adalah -0.7853981633974483.
      select atan(-1);
      --Nilai kembali adalah NULL.
      select atan(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung arctangent.

      select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -1.4711276743037347 | 0.483447001567199    | 0.483447001567199    | 1.4711276743037347  |
      | NULL                | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 |
      | -0.7853981633974483 | NULL                 | 1.521935491607842    | 1.5374753309166493  |
      | 1.3258176636680326  | 0.7272626879966904   | NULL                 | -1.5374753309166493 |
      | -1.550798992821746  | -0.7853981633974483  | -0.7853981633974483  | 1.550798992821746   |
      | 1.4056476493802699  | 0.982793723247329    | 0.982793723247329    | -1.550798992821746  |
      | -1.5565115842075    | -1.4382447944982226  | -1.4382447944982226  | NULL                |
      | 0.7853981633974483  | -1.473069419436178   | -1.473069419436178   | -0.7853981633974483 |
      | -1.5596856728972892 | 1.2010277920014796   | 1.2010277920014796   | 0.0                 |
      | 1.4711276743037347  | -1.4000611153196139  | -1.4000611153196139  | -1.5596856728972892 |
      +---------------------+----------------------+----------------------+---------------------+

BIN

  • Sintaks

    string bin(<number>)
  • Deskripsi

    Mengembalikan representasi biner dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe BIGINT, INT, SMALLINT, atau TINYINT.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:

    • Jika tipe data number bukan BIGINT, INT, SMALLINT, atau TINYINT, kesalahan dikembalikan.

    • Jika nilai number adalah 0, 0 dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 0.
      select bin(0);
      --Nilai kembali adalah NULL.
      select bin(null);
      --Nilai kembali adalah 1100.
      select bin(12);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mendapatkan representasi biner dari kolom int_data dan bigint_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | int_new                                                                    | bigint_new                                                       |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+
      | NULL                                                                       | 1111111111111111111111111111111111111111111111111111111111110110 |
      | 1111111111111111111111111111111111111111111111111111111111101100           | NULL                                                             |
      | 0                                                                          | 1111111111111111111111111111111111111111111111111111111111111111 |
      | 1111111111111111111111111111111111111111111111111111111111011000           | 100                                                              |
      | 101                                                                        | 1111111111111111111111111111111111111111111111111111111111001110 |
      | 1111111111111111111111111111111111111111111111111111111111000100           | 110                                                              |
      | 1111111111111111111111111111111111111111111111111111111111111111           | 1111111111111111111111111111111111111111111111111111111110111010 |
      | 1111111111111111111111111111111111111111111111111111111110110000           | 1                                                                |
      | 1001                                                                       | 1111111111111111111111111111111111111111111111111111111110100110 |
      | 1111111111111111111111111111111111111111111111111111111110011100           | 1010                                                             |
      +----------------------------------------------------------------------------+------------------------------------------------------------------+

CBRT

  • Sintaks

    double cbrt(<number>)
  • Deskripsi

    Menghitung akar pangkat tiga dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, atau STRING.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:

    • Jika tipe data number bukan BIGINT, INT, SMALLINT, TINYINT, DOUBLE, FLOAT, atau STRING, kesalahan dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.0.
      select cbrt(8);
      --Nilai kembali adalah NULL.
      select cbrt(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mendapatkan akar pangkat tiga dari semua kolom kecuali decimal_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new           | float_new           | string_new          |
      +---------------------+---------------------+----------------------+---------------------+---------------------+
      | NULL                | -2.1544346900318834 | 0.806714323012272    | 0.8067143108004823  | 2.1544346900318834  |
      | -2.7144176165949063 | NULL                | -0.46415888336127786 | -0.46415888566678   | -2.1544346900318834 |
      | 0.0                 | -1.0                | NULL                 | -1.0                | 3.107232505953859   |
      | -3.4199518933533937 | 1.5874010519681996  | 0.9619001716077046   | 0.961900166454112   | -3.107232505953859  |
      | 1.7099759466766968  | -3.6840314986403864 | -1.0                 | NULL                | 3.6840314986403864  |
      | -3.9148676411688634 | 1.8171205928321394  | 1.1447142425533317   | 1.1447142425533317  | -3.6840314986403864 |
      | -1.0                | -4.121285299808557  | -1.9574338205844317  | -1.9574338205844317 | NULL                |
      | -4.308869380063767  | 1.0                 | -2.168702885250197   | -2.1687028717323127 | -1.0                |
      | 2.080083823051904   | -4.481404746557165  | 1.3715339700741747   | 1.3715339565548288  | 0.0                 |
      | -4.641588833612778  | 2.1544346900318834  | -1.7967017791430528  | -1.7967017988380907 | -4.481404746557165  |
      +---------------------+---------------------+----------------------+---------------------+---------------------+

CEIL

  • Sintaks

    bigint ceil(<value>)
  • Deskripsi

    Membulatkan nilai ke atas. Fungsi ini mengembalikan bilangan bulat terkecil yang tidak kurang dari nilai input value.

  • Parameter

    value: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Jika nilai value adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.
      select ceil(1.1);
      --Nilai kembali adalah -1.
      select ceil(-1.1);
      --Nilai kembali adalah NULL.
      select ceil(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut membulatkan nilai ke atas.

      select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 1          | 1           | 10         |
      | NULL       | 0          | 0           | -10        |
      | -1         | NULL       | 21          | 30         |
      | 4          | 1          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 2          | 2           | -50        |
      | -70        | -7         | -7          | NULL       |
      | 1          | -10        | -10         | -1         |
      | -90        | 3          | 3           | 0          |
      | 10         | -5         | -5          | -90        |
      +------------+------------+-------------+------------+

CONV

  • Sintaks

    STRING CONV(<input>, BIGINT <from_base>, BIGINT <to_base>)
  • Deskripsi

    Fungsi ini mengonversi angka dari satu basis ke basis lainnya dan mengembalikan hasilnya sebagai string.

  • Parameter

    Parameter

    Wajib

    Deskripsi

    input

    Ya

    Nilai bertipe STRING.

    Catatan
    • Jika proyek Anda berada dalam mode Hive-compatible, artinya Anda telah menjalankan perintah set odps.sql.hive.compatible=true;, konversi implisit nilai BIGINT dan DOUBLE didukung.

    • Jika proyek Anda tidak berada dalam mode Hive-compatible, artinya Anda telah menjalankan perintah set odps.sql.hive.compatible=false;, konversi implisit nilai BIGINT dan DOUBLE tidak didukung.

    from_base

    Ya

    Nilai radix harus berupa bilangan bulat desimal 2, 8, 10, atau 16. Konversi tipe implisit tidak didukung.

    to_base

    Ya

    Nilai radix harus berupa bilangan bulat desimal 2, 8, 10, atau 16. Konversi tipe implisit tidak didukung.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:

    • Jika nilai input, from_base, atau to_base adalah NULL, NULL dikembalikan.

    • Konversi dilakukan dengan presisi 64-bit. Jika terjadi overflow, NULL dikembalikan.

    • Jika nilai input input bertipe BIGINT atau DOUBLE, NULL dikembalikan dalam mode non-Hive-compatible karena konversi implisit tidak didukung.

    • Jika nilai input input bernilai negatif, NULL dikembalikan dalam mode non-Hive-compatible. Dalam mode Hive-compatible, 0 dikembalikan.

    • Jika nilai input input berupa desimal, NULL dikembalikan dalam mode non-Hive-compatible. Dalam mode Hive-compatible, nilai tersebut dikonversi menjadi bilangan bulat lalu dikonversi ke basis yang ditentukan. Bagian desimal dibuang.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 12.
      SELECT CONV('1100', 2, 10);
      --Nilai kembali adalah C.
      SELECT CONV('1100', 2, 16);
      --Nilai kembali adalah 171.
      SELECT CONV('ab', 16, 10);
      --Nilai kembali adalah AB.
      SELECT CONV('ab', 16, 16);
      --Nilai kembali adalah NULL.
      SELECT CONV('1100', null, 10);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mengonversi nilai ke format biner.

      SELECT CONV(bigint_data,10,2) AS bigint_new, CONV(double_data,10,2) AS double_new, CONV(decimal_data,10,2) AS decimal_new, CONV(string_data,10,2) AS string_new FROM mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | NULL       | 0          | 0           | 1010       |
      | NULL       | NULL       | NULL        | NULL       |
      | NULL       | NULL       | 10100       | 11110      |
      | 100        | 0          | NULL        | NULL       |
      | NULL       | NULL       | NULL        | 110010     |
      | 110        | 1          | 1           | NULL       |
      | NULL       | NULL       | NULL        | NULL       |
      | 1          | NULL       | NULL        | NULL       |
      | NULL       | 10         | 10          | 0          |
      | 1010       | NULL       | NULL        | NULL       |
      +------------+------------+-------------+------------+

CORR

  • Sintaks

    double corr(<col1>, <col2>)
  • Deskripsi

    Menghitung koefisien korelasi Pearson dari dua kolom data. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    col1 dan col2: Wajib. Nama dua kolom dalam tabel yang ingin Anda hitung koefisien korelasi Pearsons-nya. Kolom harus bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, atau DECIMAL. Tipe data col1 dan col2 dapat berbeda.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Jika baris dalam kolom input berisi nilai NULL, baris tersebut tidak digunakan dalam perhitungan.

  • Contoh

    Berdasarkan data sampel, perintah berikut menghitung koefisien korelasi Pearson dari kolom double_data dan float_data.

    select corr(double_data,float_data) from mf_math_fun_t;

    Nilai kembali adalah 1.0.

COS

  • Sintaks

    double|decimal cos(<number>)
  • Deskripsi

    Menghitung cosine dari number. Nilai input dalam radian.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.6794896585028633e-8.
      select cos(3.1415926/2);
      --Nilai kembali adalah -0.9999999999999986.
      select cos(3.1415926);
      --Nilai kembali adalah NULL.
      select cos(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung cosine.

      select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+--------------------+----------------------+---------------------+
      | bigint_new          | double_new         | decimal_new          | string_new          |
      +---------------------+--------------------+----------------------+---------------------+
      | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412   | -0.8390715290764524 |
      | NULL                | 0.9950041652780258 | 0.9950041652780258   | -0.8390715290764524 |
      | 0.5403023058681398  | NULL               | -0.02964340851507803 | 0.15425144988758405 |
      | -0.6536436208636119 | 0.6294120265736969 | NULL                 | 0.15425144988758405 |
      | 0.9649660284921133  | 0.5403023058681398 | 0.5403023058681398   | 0.9649660284921133  |
      | 0.960170286650366   | 0.0707372016677029 | 0.0707372016677029   | 0.9649660284921133  |
      | 0.6333192030862999  | 0.3466353178350258 | 0.3466353178350258   | NULL                |
      | 0.5403023058681398  | -0.7142656520272003| -0.7142656520272003  | 0.5403023058681398  |
      | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756  | 1.0                 |
      | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189   | -0.4480736161291701 |
      +---------------------+--------------------+----------------------+---------------------+

COSH

  • Sintaks

    double|decimal cosh(<number>)
  • Deskripsi

    Menghitung hyperbolic cosine dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.5091784169949913.
      select cosh(3.1415926/2);
      --Nilai kembali adalah NULL.
      select cosh(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung hyperbolic cosine.

      select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +-----------------------+--------------------+--------------------+----------------------+
      | bigint_new            | double_new         | decimal_new        | string_new           |
      +-----------------------+--------------------+--------------------+----------------------+
      | 11013.232920103324    | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324   |
      | NULL                  | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324   |
      | 1.5430806348152437    | NULL               | 380445243.96844625 | 5343237290762.231    |
      | 27.308232836016487    | 1.42289270202111   | NULL               | 5343237290762.231    |
      | 2.592352764293536e21  | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 |
      | 201.7156361224559     | 2.352409615243247  | 2.352409615243247  | 2.592352764293536e21 |
      | 1.2577193354595834e30 | 904.0214837702166  | 904.0214837702166  | NULL                 |
      | 1.5430806348152437    | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437   |
      | 6.102016471589204e38  | 6.636456081840602  | 6.636456081840602  | 1.0                  |
      | 11013.232920103324    | 165.151293732197   | 165.151293732197   | 6.102016471589204e38 |
      +-----------------------+--------------------+--------------------+----------------------+

COT

  • Sintaks

    double|decimal cot(<number>)
  • Deskripsi

    Menghitung cotangent dari number. Nilai input dalam radian.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.6794896585028643E-8.
      select cot(3.1415926/2);
      --Nilai kembali adalah NULL.
      select cot(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung cotangent.

      select cot(bigint_data) as bigint_new, cot(double_data) as double_new, cot(decimal_data) as decimal_new, cot(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +-----------------------+---------------------+---------------------+----------------------+
      | bigint_new            | double_new          | decimal_new         | string_new           |
      +-----------------------+---------------------+---------------------+----------------------+
      | -1.54235104535692     | 1.7264594764178474  | 1.7264594764178474  | 1.54235104535692     |
      | NULL                  | -9.966644423259238  | -9.966644423259238  | -1.54235104535692    |
      | -0.6420926159343308   | NULL                | -0.02965644140592836| -0.15611995216165922 |
      | 0.8636911544506167    | 0.8099792954471944  | NULL                | 0.15611995216165922  |
      | 3.6778144508505695    | -0.6420926159343308 | -0.6420926159343308 | -3.6778144508505695  |
      | -3.436353004180128    | 0.07091484430265245 | 0.07091484430265245 | 3.6778144508505695   |
      | -0.8183574478651038   | -0.36954725630901636| -0.36954725630901636| NULL                 |
      | 0.6420926159343308    | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308  |
      | 0.5012027833801532    | -1.5893944776331337 | -1.5893944776331337 | 1.0                  |
      | 1.54235104535692      | 1.9059736612916494  | 1.9059736612916494  | 0.5012027833801532   |
      +-----------------------+---------------------+---------------------+----------------------+

DEGREES

  • Sintaks

    double degrees(<number>) 
  • Deskripsi

    Mengonversi nilai dari radian ke derajat.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 90.0.
      select degrees(1.5707963267948966);
      --Nilai kembali adalah 0.0.
      select degrees(0);
      --Nilai kembali adalah NULL.
      select degrees(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mendapatkan derajat yang sesuai untuk semua kolom.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | int_new             | bigint_new          | double_new          | decimal_new         | float_new           | string_new          |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
      | NULL                | -572.9577951308232  | 30.08028424436822   | 30.08028424436822   | 30.080282878330387  | 572.9577951308232   |
      | -1145.9155902616465 | NULL                | -5.729577951308232  | -5.729577951308232  | -5.729578036685597  | -572.9577951308232  |
      | 0.0                 | -57.29577951308232  | NULL                | 1171.6986910425335  | -57.29577951308232  | 1718.8733853924698  |
      | -2291.831180523293  | 229.1831180523293   | 50.99324376664326   | NULL                | 50.99324294702057   | -1718.8733853924698 |
      | 286.4788975654116   | -2864.7889756541163 | -57.29577951308232  | -57.29577951308232  | NULL                | 2864.7889756541163  |
      | -3437.7467707849396 | 343.77467707849394  | 85.94366926962348   | 85.94366926962348   | 85.94366926962348   | -2864.7889756541163 |
      | -57.29577951308232  | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL                |
      | -4583.662361046586  | 57.29577951308232   | -584.4169510334397  | -584.4169510334397  | -584.416940105137   | -57.29577951308232  |
      | 515.662015617741    | -5156.620156177409  | 147.8231111437524   | 147.8231111437524   | 147.82310677243132  | 0.0                 |
      | -5729.5779513082325 | 572.9577951308232   | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409  |
      +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+

E

  • Sintaks

    double e()
  • Deskripsi

    Mengembalikan nilai e. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan.

  • Contoh

    --Nilai kembali adalah 2.718281828459045.
    select e();

EXP

  • Sintaks

    double|decimal exp(<number>)
  • Deskripsi

    Menghitung nilai eksponensial dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 4.810477252069109.
      select exp(3.1415926/2);
      --Nilai kembali adalah NULL.
      select exp(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung nilai eksponensial.

      select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +-------------------------+-------------------------+-------------------------+-------------------------+
      | bigint_new              | double_new              | decimal_new             | string_new              |
      +-------------------------+-------------------------+-------------------------+-------------------------+
      | 0.000045399929762484854 | 1.6904588483790914      | 1.6904588483790914      | 22026.465794806718      |
      | NULL                    | 0.9048374180359595      | 0.9048374180359595      | 0.000045399929762484854 |
      | 0.36787944117144233     | NULL                    | 760890487.9368925       | 10686474581524.463      |
      | 54.598150033144236      | 2.4351296512898744      | NULL                    | 9.357622968840175e-14   |
      | 1.9287498479639178e-22  | 0.36787944117144233     | 0.36787944117144233     | 5.184705528587072e21    |
      | 403.4287934927351       | 4.4816890703380645      | 4.4816890703380645      | 1.9287498479639178e-22  |
      | 3.975449735908647e-31   | 0.0005530843701478336   | 0.0005530843701478336   | NULL                    |
      | 2.718281828459045       | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233     |
      | 8.194012623990515e-40   | 13.197138159658358      | 13.197138159658358      | 1.0                     |
      | 22026.465794806718      | 0.0030275547453758153   | 0.0030275547453758153   | 8.194012623990515e-40   |
      +-------------------------+-------------------------+-------------------------+-------------------------+

FACTORIAL

  • Sintaks

    bigint factorial(<number>)
  • Deskripsi

    Mengembalikan faktorial dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe BIGINT, INT, SMALLINT, atau TINYINT. Nilai harus berada dalam rentang [0, 20].

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Aturan berikut berlaku:

    • Jika nilai number adalah 0, 1 dikembalikan.

    • Jika nilai number adalah NULL atau tidak berada dalam rentang [0, 20], NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 120. 5! = 5 × 4 × 3 × 2 × 1 = 120
      select factorial(5); 
      --Nilai kembali adalah 1.
      select factorial(0); 
      --Nilai kembali adalah NULL.
      select factorial(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung faktorial dari kolom int_data dan bigint_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+
      | int_new    | bigint_new |
      +------------+------------+
      | NULL       | NULL       |
      | NULL       | NULL       |
      | 1          | NULL       |
      | NULL       | 24         |
      | 120        | NULL       |
      | NULL       | 720        |
      | NULL       | NULL       |
      | NULL       | 1          |
      | 362880     | NULL       |
      | NULL       | 3628800    |
      +------------+------------+

FILTER

  • Sintaks

    array<T> filter(array<T> <a>, function<T,boolean> <func>)
  • Parameter

    • a:Wajib. Array ARRAY. array<T> pada T merepresentasikan tipe data elemen array ARRAY, elemen dalam array dapat bertipe apa saja.

    • func:Wajib. Fungsi (fungsi bawaan atau user-defined function) atau ekspresi yang digunakan untuk menyaring elemen dalam a, tipe parameter input harus sama dengan tipe data elemen dalam a, tipe data hasil keluarannya adalah BOOLEAN.

  • Nilai Kembali

    Mengembalikan tipe ARRAY.

  • Contoh

    --Mengembalikan [2, 3].
    select filter(array(1, 2, 3), x -> x > 1);
    Catatan

    Untuk informasi lebih lanjut tentang fungsi Lambda ->, lihat Lambda functions.

FLOOR

  • Sintaks

    bigint floor(<number>)
  • Deskripsi

    Membulatkan nilai ke bawah. Fungsi ini mengembalikan bilangan bulat terbesar yang tidak lebih besar dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1.
      select floor(1.2);
      --Nilai kembali adalah 0.
      select floor(0.1);
      --Nilai kembali adalah -2.
      select floor(-1.2);
      --Nilai kembali adalah -1.
      select floor(-0.1);
      --Nilai kembali adalah 0.
      select floor(0.0);
      --Nilai kembali adalah 0.
      select floor(-0.0);
      --Nilai kembali adalah NULL.
      select floor(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut membulatkan nilai ke bawah.

      select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10        | 0          | 0           | 10         |
      | NULL       | -1         | -1          | -10        |
      | -1         | NULL       | 20          | 30         |
      | 4          | 0          | NULL        | -30        |
      | -50        | -1         | -1          | 50         |
      | 6          | 1          | 1           | -50        |
      | -70        | -8         | -8          | NULL       |
      | 1          | -11        | -11         | -1         |
      | -90        | 2          | 2           | 0          |
      | 10         | -6         | -6          | -90        |
      +------------+------------+-------------+------------+

FORMAT_NUMBER

  • Sintaks

    string format_number(float|double|decimal <expr1>, <expr2>)
  • Deskripsi

    Mengonversi angka menjadi string dalam format tertentu. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    • expr1: Wajib. Data yang akan diformat. Nilai dapat bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

    • expr2: Wajib. Format tujuan. Anda dapat menentukan jumlah tempat desimal yang ingin dipertahankan. Anda juga dapat menentukan deskripsi format, seperti #,###,###.##.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:

    • Jika expr2 > 0, nilai dibulatkan ke jumlah tempat desimal yang ditentukan.

    • Jika expr2 = 0, tidak ada titik desimal atau bagian desimal yang disertakan.

    • Jika expr2 < 0 atau expr2 > 340, kesalahan dikembalikan.

    • Jika nilai expr1 atau expr2 adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 5.230.
      select format_number(5.230134523424545456,3);
      --Nilai kembali adalah 12,332.123.
      select format_number(12332.123456, '#,###,###,###.###');
      --Nilai kembali adalah NULL.
      select format_number(null,3);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mempertahankan jumlah tempat desimal tertentu untuk semua kolom.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------+------------+------------+-------------+-----------+------------+
      | int_new | bigint_new | double_new | decimal_new | float_new | string_new |
      +---------+------------+------------+-------------+-----------+------------+
      | NULL    | -10.0      | 0.53       | 0.5         | 1         | 10.0       |
      | -20.0   | NULL       | -0.10      | -0.1        | -0        | -10.0      |
      | 0.0     | -1.0       | NULL       | 20.5        | -1        | 30.0       |
      | -40.0   | 4.0        | 0.89       | NULL        | 1         | -30.0      |
      | 5.0     | -50.0      | -1.00      | -1.0        | NULL      | 50.0       |
      | -60.0   | 6.0        | 1.50       | 1.5         | 2         | -50.0      |
      | -1.0    | -70.0      | -7.50      | -7.5        | -8        | NULL       |
      | -80.0   | 1.0        | -10.20     | -10.2       | -10       | -1.0       |
      | 9.0     | -90.0      | 2.58       | 2.6         | 3         | 0.0        |
      | -100.0  | 10.0       | -5.80      | -5.8        | -6        | -90.0      |
      +---------+------------+------------+-------------+-----------+------------+

HEX

  • Sintaks

    string hex(<number>) 
  • Deskripsi

    Mengonversi nilai numerik atau string ke format heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

  • Nilai Kembali

    Nilai bertipe STRING dikembalikan. Aturan berikut berlaku:

    • Jika nilai number bukan 0 atau NULL, nilai bertipe STRING dikembalikan.

    • Jika nilai number adalah 0, 0 dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 0.
      select hex(0);
      --Nilai kembali adalah 616263.
      select hex('abc');
      --Nilai kembali adalah 11.
      select hex(17);
      --Nilai kembali adalah 3137.
      select hex('17');
      --Kesalahan dikembalikan. 
      select hex(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mengonversi semua kolom ke format heksadesimal.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------------+------------------+------------+-------------+------------+------------+
      | int_new          | bigint_new       | double_new | decimal_new | float_new  | string_new |
      +------------------+------------------+------------+-------------+------------+------------+
      | NULL             | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235  | 302E353235 | 3130       |
      | FFFFFFFFFFFFFFEC | NULL             | 2D302E31   | 2D302E31    | 2D302E31   | 2D3130     |
      | 0                | FFFFFFFFFFFFFFFF | NULL       | 32302E3435  | 2D31       | 3330       |
      | FFFFFFFFFFFFFFD8 | 4                | 302E3839   | NULL        | 302E3839   | 2D3330     |
      | 5                | FFFFFFFFFFFFFFCE | 2D312E30   | 2D31        | NULL       | 3530       |
      | FFFFFFFFFFFFFFC4 | 6                | 312E35     | 312E35      | 312E35     | 2D3530     |
      | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35   | 2D372E35    | 2D372E35   | NULL       |
      | FFFFFFFFFFFFFFB0 | 1                | 2D31302E32 | 2D31302E32  | 2D31302E32 | 2D31       |
      | 9                | FFFFFFFFFFFFFFA6 | 322E3538   | 322E3538    | 322E3538   | 30         |
      | FFFFFFFFFFFFFF9C | A                | 2D352E38   | 2D352E38    | 2D352E38   | 2D3930     |
      +------------------+------------------+------------+-------------+------------+------------+

ISNAN

  • Sintaks

    boolean isnan(<expr>)
  • Deskripsi

    Memeriksa apakah nilai expr adalah NaN.

  • Parameter

    expr: Wajib. Nilai bertipe DOUBLE. Jika nilai input bertipe STRING, BIGINT, atau DECIMAL, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    • Jika nilai expr adalah NaN, True dikembalikan. Jika tidak, False dikembalikan.

    • Jika nilai expr adalah NULL, False dikembalikan.

  • Contoh

    --Nilai kembali adalah False.
    SELECT isnan(100.1);

LN

  • Sintaks

    double|decimal ln(<number>)
  • Deskripsi

    Menghitung logaritma natural dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number bernilai negatif atau 0, NULL dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1.144729868791239.
      select ln(3.1415926);
      --Nilai kembali adalah NULL.
      select ln(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung logaritma natural.

      select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+----------------------+---------------------+---------------------+
      | bigint_new         | double_new           | decimal_new         | string_new          |
      +--------------------+----------------------+---------------------+---------------------+
      | NULL               | -0.6443570163905132  | -0.6443570163905132 | 2.302585092994046   |
      | NULL               | NULL                 | NULL                | NULL                |
      | NULL               | NULL                 | 3.017982882488811   | 3.4011973816621555  |
      | 1.3862943611198906 | -0.11653381625595151 | NULL                | NULL                |
      | NULL               | NULL                 | NULL                | 3.912023005428146   |
      | 1.791759469228055  | 0.4054651081081644   | 0.4054651081081644  | NULL                |
      | NULL               | NULL                 | NULL                | NULL                |
      | 0.0                | NULL                 | NULL                | NULL                |
      | NULL               | 0.9477893989335261   | 0.9477893989335261  | NULL                |
      | 2.302585092994046  | NULL                 | NULL                | NULL                |
      +--------------------+----------------------+---------------------+---------------------+

LOG

  • Sintaks

    double log(<base>, <x>)
  • Deskripsi

    Menghitung logaritma dari x dengan basis base.

  • Parameter

    • base: Wajib. Basis. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    • x: Wajib. Nilai yang ingin Anda hitung logaritmanya. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:

    • Jika nilai base atau x adalah NULL, NULL dikembalikan.

    • Jika nilai base atau x bernilai negatif atau 0, NULL dikembalikan.

    • Jika nilai base adalah 1, yang menyebabkan kesalahan pembagian dengan nol, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 4.0.
      select log(2, 16);
      --Nilai kembali adalah NULL.
      select log(2, null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung logaritma basis-2 dari kolom.

      select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+----------------------+--------------------+--------------------+
      | bigint_new         | double_new           | decimal_new        | string_new         |
      +--------------------+----------------------+--------------------+--------------------+
      | NULL               | -0.929610672108602   | -0.929610672108602 | 3.3219280948873626 |
      | NULL               | NULL                 | NULL               | NULL               |
      | NULL               | NULL                 | 4.354028938054387  | 4.906890595608519  |
      | 2.0                | -0.16812275880832692 | NULL               | NULL               |
      | NULL               | NULL                 | NULL               | 5.643856189774724  |
      | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | NULL               |
      | NULL               | NULL                 | NULL               | NULL               |
      | 0.0                | NULL                 | NULL               | NULL               |
      | NULL               | 1.3673710656485296   | 1.3673710656485296 | NULL               |
      | 3.3219280948873626 | NULL                 | NULL               | NULL               |
      +--------------------+----------------------+--------------------+--------------------+

LOG10

  • Sintaks

    double log10(<number>)
  • Deskripsi

    Mengembalikan logaritma basis-10 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bernilai negatif, atau NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah NULL.
      select log10(null);
      --Nilai kembali adalah NULL.
      select log10(0);
      --Nilai kembali adalah 0.9030899869919435.
      select log10(8);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung logaritma basis-10 dari semua kolom.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | int_new            | bigint_new         | double_new          | decimal_new         | float_new             | string_new         |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
      | NULL               | NULL               | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606  | 1.0                |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | NULL               | NULL                | 1.3106933123433606  | NULL                  | 1.4771212547196624 |
      | NULL               | 0.6020599913279623 | -0.0506099933550872 | NULL                | -0.050610000335573106 | NULL               |
      | 0.6989700043360187 | NULL               | NULL                | NULL                | NULL                  | 1.6989700043360185 |
      | NULL               | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124   | NULL               |
      | NULL               | NULL               | NULL                | NULL                | NULL                  | NULL               |
      | NULL               | 0.0                | NULL                | NULL                | NULL                  | NULL               |
      | 0.9542425094393249 | NULL               | 0.4116197059632301  | 0.4116197059632301  | 0.411619693120579     | NULL               |
      | NULL               | 1.0                | NULL                | NULL                | NULL                  | NULL               |
      +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+

LOG2

  • Sintaks

    double log2(<number>)
  • Deskripsi

    Mengembalikan logaritma basis-2 dari number. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah 0, bernilai negatif, atau NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah NULL.
      select log2(null);
      --Nilai kembali adalah NULL.
      select log2(0);
      --Nilai kembali adalah 3.0.
      select log2(8);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung logaritma basis-2 dari semua kolom.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | int_new            | bigint_new         | double_new           | decimal_new        | float_new            | string_new         |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
      | NULL               | NULL               | -0.929610672108602   | -0.929610672108602 | -0.9296107376258038  | 3.3219280948873626 |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | NULL               | NULL                 | 4.354028938054387  | NULL                 | 4.906890595608519  |
      | NULL               | 2.0                | -0.16812275880832692 | NULL               | -0.16812278199699915 | NULL               |
      | 2.321928094887362  | NULL               | NULL                 | NULL               | NULL                 | 5.643856189774724  |
      | NULL               | 2.584962500721156  | 0.5849625007211562   | 0.5849625007211562 | 0.5849625007211562   | NULL               |
      | NULL               | NULL               | NULL                 | NULL               | NULL                 | NULL               |
      | NULL               | 0.0                | NULL                 | NULL               | NULL                 | NULL               |
      | 3.1699250014423126 | NULL               | 1.3673710656485296   | 1.3673710656485296 | 1.367371022986166    | NULL               |
      | NULL               | 3.3219280948873626 | NULL                 | NULL               | NULL                 | NULL               |
      +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+

NEGATIVE

  • Sintaks

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • Deskripsi

    Mengembalikan nilai negatif dari expr.

  • Parameter

    expr: Wajib. Ekspresi input. Nilai dapat bertipe TINYINT, SMALLINT, INT, BIGINT, DOUBLE, atau DECIMAL.

  • Nilai Kembali

    Mengembalikan nilai negatif dari ekspresi expr.

  • Contoh

    --Nilai kembali adalah -1.
    SELECT negative(1);

PI

  • Sintaks

    double pi()
  • Deskripsi

    Mengembalikan nilai π. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan.

  • Contoh

    --Nilai kembali adalah 3.141592653589793.
    select pi();

POSITIVE

  • Sintaks

    TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
  • Deskripsi

    Mengembalikan nilai dari expr.

  • Parameter

    expr: Wajib. Ekspresi input. Nilai dapat bertipe TINYINT, SMALLINT, INT, BIGINT, DOUBLE, atau DECIMAL.

  • Nilai Kembali

    Mengembalikan nilai dari ekspresi expr.

  • Contoh

    --Nilai kembali adalah 1.
    SELECT positive(1);

POW

  • Sintaks

    double|decimal pow(<x>, <y>)
  • Deskripsi

    Menghitung nilai x pangkat y, yaitu x^y.

  • Parameter

    • x: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    • y: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika x atau y bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika x atau y bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai x atau y adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 65536.0.
      select pow(2, 16);
      --Nilai kembali adalah NULL.
      select pow(2, null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung nilai kolom pangkat 2.

      select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+----------------------+----------------------+------------+
      | bigint_new | double_new           | decimal_new          | string_new |
      +------------+----------------------+----------------------+------------+
      | 100.0      | 0.275625             | 0.275625             | 100.0      |
      | NULL       | 0.010000000000000002 | 0.010000000000000002 | 100.0      |
      | 1.0        | NULL                 | 418.2025             | 900.0      |
      | 16.0       | 0.7921               | NULL                 | 900.0      |
      | 2500.0     | 1.0                  | 1.0                  | 2500.0     |
      | 36.0       | 2.25                 | 2.25                 | 2500.0     |
      | 4900.0     | 56.25                | 56.25                | NULL       |
      | 1.0        | 104.03999999999999   | 104.03999999999999   | 1.0        |
      | 8100.0     | 6.6564000000000005   | 6.6564000000000005   | 0.0        |
      | 100.0      | 33.64                | 33.64                | 8100.0     |
      +------------+----------------------+----------------------+------------+

RADIANS

  • Sintaks

    double radians(<number>)
  • Deskripsi

    Mengonversi nilai dari derajat ke radian. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1.5707963267948966.
      select radians(90);
      --Nilai kembali adalah 0.0.
      select radians(0);
      --Nilai kembali adalah NULL.
      select radians(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mengonversi semua kolom ke radian.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | int_new               | bigint_new            | double_new             | decimal_new            | float_new              | string_new            |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
      | NULL                  | -0.17453292519943295  | 0.00916297857297023    | 0.00916297857297023    | 0.009162978156851308   | 0.17453292519943295   |
      | -0.3490658503988659   | NULL                  | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295  |
      | 0.0                   | -0.017453292519943295 | NULL                   | 0.3569198320328404     | -0.017453292519943295  | 0.5235987755982988    |
      | -0.6981317007977318   | 0.06981317007977318   | 0.015533430342749534   | NULL                   | 0.015533430093078181   | -0.5235987755982988   |
      | 0.08726646259971647   | -0.8726646259971648   | -0.017453292519943295  | -0.017453292519943295  | NULL                   | 0.8726646259971648    |
      | -1.0471975511965976   | 0.10471975511965977   | 0.02617993877991494    | 0.02617993877991494    | 0.02617993877991494    | -0.8726646259971648   |
      | -0.017453292519943295 | -1.2217304763960306   | -0.1308996938995747    | -0.1308996938995747    | -0.1308996938995747    | NULL                  |
      | -1.3962634015954636   | 0.017453292519943295  | -0.17802358370342158   | -0.17802358370342158   | -0.17802358037447025   | -0.017453292519943295 |
      | 0.15707963267948966   | -1.5707963267948966   | 0.045029494701453704   | 0.045029494701453704   | 0.04502949336987316    | 0.0                   |
      | -1.7453292519943295   | 0.17453292519943295   | -0.10122909661567112   | -0.10122909661567112   | -0.10122909994462247   | -1.5707963267948966   |
      +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+

RAND

  • Sintaks

    double rand(bigint <seed>)
  • Deskripsi

    Mengembalikan bilangan acak bertipe DOUBLE dalam rentang 0 hingga 1.

  • Parameter

    seed: Opsional. Nilai bertipe BIGINT. Seed menentukan nilai awal untuk urutan bilangan acak.

    Catatan

    Anda dapat menggunakan seed untuk menentukan urutan bilangan acak. Setelah seed ditentukan, nilai kembali fungsi ini tetap. Jika lingkungan eksekusi dan nilai seed tetap sama, nilai kembalinya juga sama. Untuk mendapatkan hasil yang berbeda, Anda harus mengubah nilai seed.

    Anda dapat menambahkan parameter berikut sebelum pernyataan SQL. Nilai default adalah false.

    set odps.sql.executionengine.enable.rand.time.seed=true|false;
    • Jika parameter ini diatur ke false, fungsi RAND menggunakan ID instans saat ini sebagai seed awal untuk bilangan acak guna memastikan idempotensi fungsi.

    • Jika parameter ini diatur ke true, fungsi RAND menggunakan waktu sistem saat ini sebagai seed awal untuk bilangan acak. Namun, fungsi RAND tidak lagi idempoten dan tidak dapat digunakan sebagai kunci shuffle. Hal ini menyebabkan hasil yang berbeda ketika Anda menjalankan fungsi tersebut lagi.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan.

  • Contoh

    --Nilai kembali adalah 4.7147460303803655E-4.
    select rand();
    --Nilai kembali adalah 0.7308781907032909.
    select rand(1);

ROUND

  • Sintaks

    double|decimal round(<number>[, bigint <decimal_places>])
  • Deskripsi

    Membulatkan nilai ke tempat desimal tertentu.

  • Parameter

    • number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    • decimal_places: Opsional. Konstanta bertipe BIGINT. Parameter ini menentukan jumlah tempat desimal yang ingin Anda bulatkan. Jika Anda menghilangkan parameter ini, nilai dibulatkan ke bilangan bulat terdekat. Nilai default adalah 0.

      Catatan

      Nilai decimal_places dapat berupa bilangan negatif. Jika nilainya negatif, fungsi membulatkan digit di sebelah kiri titik desimal dan tidak mempertahankan bagian desimal. Jika nilai decimal_places lebih besar daripada panjang bagian bilangan bulat, 0 dikembalikan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika tipe data decimal_places bukan BIGINT, kesalahan dikembalikan.

    • Jika nilai number atau decimal_places adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 125.0.
      select round(125.315);
      --Nilai kembali adalah 125.3.
      select round(125.315, 1);
      --Nilai kembali adalah 125.32.
      select round(125.315, 2);
      --Nilai kembali adalah 125.315.
      select round(125.315, 3);
      --Nilai kembali adalah -125.32.
      select round(-125.315, 2);
      --Nilai kembali adalah 100.0.
      select round(123.345, -2);
      --Nilai kembali adalah NULL.
      select round(null);
      --Nilai kembali adalah 123.345.
      select round(123.345, 4);
      --Nilai kembali adalah 0.0.
      select round(123.345, -4);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut membulatkan nilai dalam kolom ke tempat desimal tertentu.

      select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+-------------+------------+
      | bigint_new | double_new | decimal_new | string_new |
      +------------+------------+-------------+------------+
      | -10.0      | 0.53       | 0.5         | 10.0       |
      | NULL       | -0.1       | -0.1        | -10.0      |
      | -1.0       | NULL       | 20.5        | 30.0       |
      | 4.0        | 0.89       | NULL        | -30.0      |
      | -50.0      | -1.0       | -1          | 50.0       |
      | 6.0        | 1.5        | 1.5         | -50.0      |
      | -70.0      | -7.5       | -7.5        | NULL       |
      | 1.0        | -10.2      | -10.2       | -1.0       |
      | -90.0      | 2.58       | 2.6         | 0.0        |
      | 10.0       | -5.8       | -5.8        | -90.0      |
      +------------+------------+-------------+------------+

SHIFTLEFT

  • Sintaks

    int shiftleft(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftleft(bigint <number1>, int <number2>)
  • Deskripsi

    Menjalankan left shift (<<). Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    • number1: Wajib. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.

    • number2: Wajib. Nilai bertipe INT.

  • Nilai Kembali

    Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:

    • Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.

    • Jika tipe data number2 bukan INT, kesalahan dikembalikan.

    • Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 4. Nilai biner 1 digeser ke kiri dua bit (1<<2, 0001 digeser ke kiri dua bit menjadi 0100).
      select shiftleft(1,2); 
      --Nilai kembali adalah 32. Nilai biner 4 digeser ke kiri tiga bit (4<<3, 0100 digeser ke kiri tiga bit menjadi 100000).
      select shiftleft(4,3);
      --Nilai kembali adalah NULL.
      select shiftleft(null,2);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menjalankan left shift pada kolom int_data dan bigint_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -20        |
      | -40     | NULL       |
      | 0       | -2         |
      | -80     | 8          |
      | 10      | -100       |
      | -120    | 12         |
      | -2      | -140       |
      | -160    | 2          |
      | 18      | -180       |
      | -200    | 20         |
      +---------+------------+

SHIFTRIGHT

  • Sintaks

    int shiftright(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftright(bigint <number1>, int <number2>)
  • Deskripsi

    Menjalankan right shift (>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    • number1: Wajib. Nilai bertipe TINYINT, SMALLINT, INT, atau BIGINT.

    • number2: Wajib. Nilai bertipe INT.

  • Nilai Kembali

    Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:

    • Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.

    • Jika tipe data number2 bukan INT, kesalahan dikembalikan.

    • Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1. Nilai biner 4 digeser ke kanan dua bit (4>>2, 0100 digeser ke kanan dua bit menjadi 0001).
      select shiftright(4,2);
      --Nilai kembali adalah 4. Nilai biner 32 digeser ke kanan tiga bit (32>>3, 100000 digeser ke kanan tiga bit menjadi 0100).
      select shiftright(32,3);
      --Nilai kembali adalah NULL.
      select shiftright(null,3);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menjalankan right shift pada kolom int_data dan bigint_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------+------------+
      | int_new | bigint_new |
      +---------+------------+
      | NULL    | -5         |
      | -10     | NULL       |
      | 0       | -1         |
      | -20     | 2          |
      | 2       | -25        |
      | -30     | 3          |
      | -1      | -35        |
      | -40     | 0          |
      | 4       | -45        |
      | -50     | 5          |
      +---------+------------+

SHIFTRIGHTUNSIGNED

  • Sintaks

    int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>)
    bigint shiftrightunsigned(bigint <number1>, int <number2>)
  • Deskripsi

    Menjalankan unsigned right shift (>>>). Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    • number1: Wajib. Bilangan bulat bertipe TINYINT, SMALLINT, INT, atau BIGINT.

    • number2: Wajib. Bilangan bulat bertipe INT.

  • Nilai Kembali

    Nilai bertipe INT atau BIGINT dikembalikan. Aturan berikut berlaku:

    • Jika tipe data number1 bukan TINYINT, SMALLINT, INT, atau BIGINT, kesalahan dikembalikan.

    • Jika tipe data number2 bukan INT, kesalahan dikembalikan.

    • Jika nilai number1 atau number2 adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2. Nilai biner 8 digeser ke kanan dua bit tanpa mempertimbangkan tanda (8>>>2, 1000 digeser ke kanan dua bit menjadi 0010).
      select shiftrightunsigned(8,2);
      --Nilai kembali adalah 1073741820. Nilai biner -14 digeser ke kanan dua bit (-14>>>2, 11111111 11111111 11111111 11110010 digeser ke kanan dua bit menjadi 00111111 11111111 11111111 11111100).
      select shiftrightunsigned(-14,2);
      --Nilai kembali adalah NULL.
      select shiftrightunsigned(-14,null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mengembalikan nilai unsigned right shift dari kolom int_data dan bigint_data.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------------+
      | int_new    | bigint_new          |
      +------------+---------------------+
      | NULL       | 9223372036854775803 |
      | 2147483638 | NULL                |
      | 0          | 9223372036854775807 |
      | 2147483628 | 2                   |
      | 2          | 9223372036854775783 |
      | 2147483618 | 3                   |
      | 2147483647 | 9223372036854775773 |
      | 2147483608 | 0                   |
      | 4          | 9223372036854775763 |
      | 2147483598 | 5                   |
      +------------+---------------------+

SIGN

  • Sintaks

    double sign(<number>)
  • Deskripsi

    Mendapatkan tanda dari parameter input. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE, BIGINT, INT, SMALLINT, TINYINT, FLOAT, DECIMAL, atau STRING.

  • Nilai Kembali

    Nilai bertipe DOUBLE dikembalikan. Aturan berikut berlaku:

    • Jika nilai number bernilai positif, 1.0 dikembalikan.

    • Jika nilai number bernilai negatif, -1.0 dikembalikan.

    • Jika nilai number adalah 0, 0.0 dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah -1.0.
      select sign(-2.5);
      --Nilai kembali adalah 1.0.
      select sign(2.5);
      --Nilai kembali adalah 0.0.
      select sign(0);
      --Nilai kembali adalah NULL.
      select sign(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut mendapatkan tanda dari semua kolom.

      --Aktifkan tipe data baru MaxCompute V2.0. Anda harus menjalankan perintah ini bersama dengan pernyataan SQL.
      set odps.sql.type.system.odps2=true;
      select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+------------+------------+-------------+------------+------------+
      | int_new    | bigint_new | double_new | decimal_new | float_new  | string_new |
      +------------+------------+------------+-------------+------------+------------+
      | NULL       | -1.0       | 1.0        | 1           | 1.0        | 1.0        |
      | -1.0       | NULL       | -1.0       | -1          | -1.0       | -1.0       |
      | 0.0        | -1.0       | NULL       | 1           | -1.0       | 1.0        |
      | -1.0       | 1.0        | 1.0        | NULL        | 1.0        | -1.0       |
      | 1.0        | -1.0       | -1.0       | -1          | NULL       | 1.0        |
      | -1.0       | 1.0        | 1.0        | 1           | 1.0        | -1.0       |
      | -1.0       | -1.0       | -1.0       | -1          | -1.0       | NULL       |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      | 1.0        | -1.0       | 1.0        | 1           | 1.0        | 0.0        |
      | -1.0       | 1.0        | -1.0       | -1          | -1.0       | -1.0       |
      +------------+------------+------------+-------------+------------+------------+

SIN

  • Sintaks

    double|decimal sin(<number>)
  • Deskripsi

    Menghitung sine dari number. Nilai input dalam radian.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah -0.3048106211022167.
      select sin(60);
      --Nilai kembali adalah NULL.
      select sin(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung sine dari kolom.

      select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | 0.5440211108893698   | 0.5012130046737979   | 0.5012130046737979   | -0.5440211108893698  |
      | NULL                 | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698   |
      | -0.8414709848078965  | NULL                 | 0.9995605376022045   | -0.9880316240928618  |
      | -0.7568024953079282  | 0.7770717475268238   | NULL                 | 0.9880316240928618   |
      | 0.26237485370392877  | -0.8414709848078965  | -0.8414709848078965  | -0.26237485370392877 |
      | -0.27941549819892586 | 0.9974949866040544   | 0.9974949866040544   | 0.26237485370392877  |
      | -0.7738906815578891  | -0.9379999767747389  | -0.9379999767747389  | NULL                 |
      | 0.8414709848078965   | 0.6998746875935423   | 0.6998746875935423   | -0.8414709848078965  |
      | -0.8939966636005579  | 0.5325349075556212   | 0.5325349075556212   | 0.0                  |
      | -0.5440211108893698  | 0.46460217941375737  | 0.46460217941375737  | -0.8939966636005579  |
      +----------------------+----------------------+----------------------+----------------------+

SINH

  • Sintaks

    double|decimal sinh(<number>)
  • Deskripsi

    Menghitung hyperbolic sine dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 5.343237290762231E12.
      select sinh(30);
      --Nilai kembali adalah NULL.
      select sinh(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung hyperbolic sine dari kolom.

      select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------------------+----------------------+----------------------+-----------------------+
      | bigint_new             | double_new           | decimal_new          | string_new            |
      +------------------------+----------------------+----------------------+-----------------------+
      | -11013.232874703393    | 0.5494517420061382   | 0.5494517420061382   | 11013.232874703393    |
      | NULL                   | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393   |
      | -1.1752011936438014    | NULL                 | 380445243.96844625   | 5343237290762.231     |
      | 27.28991719712775      | 1.0122369492687646   | NULL                 | -5343237290762.231    |
      | -2.592352764293536e21  | -1.1752011936438014  | -1.1752011936438014  | 2.592352764293536e21  |
      | 201.71315737027922     | 2.1292794550948173   | 2.1292794550948173   | -2.592352764293536e21 |
      | -1.2577193354595834e30 | -904.0209306858466   | -904.0209306858466   | NULL                  |
      | 1.1752011936438014     | -13451.593018563612  | -13451.593018563612  | -1.1752011936438014   |
      | -6.102016471589204e38  | 6.560682077817757    | 6.560682077817757    | 0.0                   |
      | 11013.232874703393     | -165.1482661774516   | -165.1482661774516   | -6.102016471589204e38 |
      +------------------------+----------------------+----------------------+-----------------------+

SQRT

  • Sintaks

    double|decimal sqrt(<number>)
  • Deskripsi

    Menghitung akar kuadrat dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Nilai harus lebih besar dari 0. Jika nilainya kurang dari 0, NULL dikembalikan. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 2.0.
      select sqrt(4);
      --Nilai kembali adalah NULL.
      select sqrt(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung akar kuadrat dari kolom.

      select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +--------------------+--------------------+-------------------+--------------------+
      | bigint_new         | double_new         | decimal_new       | string_new         |
      +--------------------+--------------------+-------------------+--------------------+
      | NULL               | 0.724568837309472  | 0.724568837309472 | 3.1622776601683795 |
      | NULL               | NULL               | NULL              | NULL               |
      | NULL               | NULL               | 4.522167621838006 | 5.477225575051661  |
      | 2.0                | 0.9433981132056604 | NULL              | NULL               |
      | NULL               | NULL               | NULL              | 7.0710678118654755 |
      | 2.449489742783178  | 1.224744871391589  | 1.224744871391589 | NULL               |
      | NULL               | NULL               | NULL              | NULL               |
      | 1.0                | NULL               | NULL              | NULL               |
      | NULL               | 1.606237840420901  | 1.606237840420901 | 0.0                |
      | 3.1622776601683795 | NULL               | NULL              | NULL               |
      +--------------------+--------------------+-------------------+--------------------+

TAN

  • Sintaks

    double|decimal tan(<number>)
  • Deskripsi

    Menghitung tangent dari number. Nilai input dalam radian.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah -6.405331196646276.
      select tan(30);
      --Nilai kembali adalah NULL.
      select tan(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung tangent dari kolom.

      select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +----------------------+----------------------+----------------------+----------------------+
      | bigint_new           | double_new           | decimal_new          | string_new           |
      +----------------------+----------------------+----------------------+----------------------+
      | -0.6483608274590866  | 0.5792200822893652   | 0.5792200822893652   | 0.6483608274590866   |
      | NULL                 | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866  |
      | -1.5574077246549023  | NULL                 | -33.71948732190433   | -6.405331196646276   |
      | 1.1578212823495775   | 1.2345994590490046   | NULL                 | 6.405331196646276    |
      | 0.27190061199763077  | -1.5574077246549023  | -1.5574077246549023  | -0.27190061199763077 |
      | -0.29100619138474915 | 14.101419947171719   | 14.101419947171719   | 0.27190061199763077  |
      | -1.2219599181369434  | -2.706013866772691   | -2.706013866772691   | NULL                 |
      | 1.5574077246549023   | -0.979852083895097   | -0.979852083895097   | -1.5574077246549023  |
      | 1.995200412208242    | -0.6291704256385503  | -0.6291704256385503  | 0.0                  |
      | 0.6483608274590866   | 0.5246662219468002   | 0.5246662219468002   | 1.995200412208242    |
      +----------------------+----------------------+----------------------+----------------------+

TANH

  • Sintaks

    double|decimal tanh(<number>)
  • Deskripsi

    Menghitung hyperbolic tangent dari number.

  • Parameter

    number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 1.0.
      select tanh(30);
      --Nilai kembali adalah NULL.
      select tanh(null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut menghitung hyperbolic tangent dari kolom.

      select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +---------------------+----------------------+----------------------+---------------------+
      | bigint_new          | double_new           | decimal_new          | string_new          |
      +---------------------+----------------------+----------------------+---------------------+
      | -0.9999999958776927 | 0.48154979836430806  | 0.48154979836430806  | 0.9999999958776927  |
      | NULL                | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 |
      | -0.7615941559557649 | NULL                 | 1.0                  | 1.0                 |
      | 0.999329299739067   | 0.7113937318189625   | NULL                 | -1.0                |
      | -1.0                | -0.7615941559557649  | -0.7615941559557649  | 1.0                 |
      | 0.9999877116507956  | 0.9051482536448664   | 0.9051482536448664   | -1.0                |
      | -1.0                | -0.9999993881955461  | -0.9999993881955461  | NULL                |
      | 0.7615941559557649  | -0.9999999972367348  | -0.9999999972367348  | -0.7615941559557649 |
      | -1.0                | 0.9885821584459533   | 0.9885821584459533   | 0.0                 |
      | 0.9999999958776927  | -0.9999816679925603  | -0.9999816679925603  | -1.0                |
      +---------------------+----------------------+----------------------+---------------------+

TRUNC

  • Sintaks

    double|decimal trunc(<number>[, bigint <decimal_places>])
  • Deskripsi

    Memotong nilai input number ke tempat desimal tertentu.

    Catatan

    Dalam mode Hive-compatible, fungsi ini digunakan untuk konversi tanggal alih-alih sebagai fungsi matematika. Untuk informasi lebih lanjut tentang fungsi tanggal yang sesuai, lihat DATETRUNC. Anda dapat mengatur versi tipe data untuk proyek MaxCompute Anda sesuai kebutuhan. Untuk informasi lebih lanjut tentang versi tipe data, lihat Data type versions.

  • Parameter

    • number: Wajib. Nilai bertipe DOUBLE atau DECIMAL. Jika nilai input bertipe STRING atau BIGINT, nilai tersebut secara implisit dikonversi menjadi nilai bertipe DOUBLE untuk perhitungan.

    • decimal_places: Opsional. Konstanta bertipe BIGINT. Parameter ini menentukan jumlah tempat desimal yang ingin Anda potong. Jika Anda menghilangkan parameter ini, nilai dipotong ke bilangan bulat terdekat. Nilai decimal_places dapat berupa bilangan negatif. Jika nilainya negatif, fungsi memotong dari titik desimal ke kiri dan tidak mempertahankan bagian desimal. Jika nilai decimal_places lebih besar daripada panjang bagian bilangan bulat, 0 dikembalikan.

  • Nilai Kembali

    Nilai bertipe DOUBLE atau DECIMAL dikembalikan. Aturan berikut berlaku:

    • Jika number bertipe DOUBLE atau DECIMAL, nilai bertipe yang sesuai dikembalikan.

    • Jika number bertipe STRING atau BIGINT, nilai bertipe DOUBLE dikembalikan.

    • Jika tipe data decimal_places bukan BIGINT, kesalahan dikembalikan.

    • Jika nilai number atau decimal_places adalah NULL, NULL dikembalikan.

    Catatan
    • Jika nilai bertipe DOUBLE dikembalikan, hasilnya mungkin tidak seperti yang diharapkan. Misalnya, trunc(125.815,1). Masalah tampilan untuk tipe DOUBLE ini ada di semua sistem.

    • Bagian yang dipotong diisi dengan nol.

  • Contoh

    • Contoh data statis

      --Nilai kembali adalah 125.0.
      select trunc(125.815,0);
      --Nilai kembali adalah 125.80000000000001.
      select trunc(125.815,1);
      --Nilai kembali adalah 125.81.
      select trunc(125.815,2);
      --Nilai kembali adalah 125.815.
      select trunc(125.815,3);
      --Nilai kembali adalah -125.81.
      select trunc(-125.815,2);
      --Nilai kembali adalah 120.0.
      select trunc(125.815,-1);
      --Nilai kembali adalah 100.0.
      select trunc(125.815,-2);
      --Nilai kembali adalah 0.0.
      select trunc(125.815,-3);
      --Nilai kembali adalah 123.345.
      select trunc(123.345,4);
      --Nilai kembali adalah 0.0.
      select trunc(123.345,-4);
      --Nilai kembali adalah NULL.
      select trunc(123.345,null);
    • Contoh data tabel

      Berdasarkan data sampel, perintah berikut memotong nilai dalam kolom ke tempat desimal tertentu.

      select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;

      Hasil berikut dikembalikan.

      +------------+---------------------+-------------+------------+
      | bigint_new | double_new          | decimal_new | string_new |
      +------------+---------------------+-------------+------------+
      | -10.0      | 0.5                 | 0.5         | 10.0       |
      | NULL       | -0.1                | -0.1        | -10.0      |
      | -1.0       | NULL                | 20.4        | 30.0       |
      | 4.0        | 0.8                 | NULL        | -30.0      |
      | -50.0      | -1.0                | -1          | 50.0       |
      | 6.0        | 1.5                 | 1.5         | -50.0      |
      | -70.0      | -7.5                | -7.5        | NULL       |
      | 1.0        | -10.200000000000001 | -10.2       | -1.0       |
      | -90.0      | 2.5                 | 2.5         | 0.0        |
      | 10.0       | -5.800000000000001  | -5.8        | -90.0      |
      +------------+---------------------+-------------+------------+

UNHEX

  • Sintaks

    binary unhex(string <number>)
  • Deskripsi

    Mengembalikan string yang direpresentasikan oleh string heksadesimal. Ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    number: Wajib. String heksadesimal.

  • Nilai Kembali

    Nilai bertipe BINARY dikembalikan. Aturan berikut berlaku:

    • Jika nilai number adalah 0, kesalahan dikembalikan.

    • Jika nilai number adalah NULL, NULL dikembalikan.

  • Contoh

    --Nilai kembali adalah abc.
    select unhex('616263');
    --Nilai kembali adalah abc.
    select unhex(616263);
    --Nilai kembali adalah NULL.
    select unhex(null);

WIDTH_BUCKET

  • Sintaks

    width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
  • Deskripsi

    Fungsi ini membangun sejumlah grup berukuran sama berdasarkan nilai minimum, nilai maksimum, dan jumlah grup yang ditentukan. Fungsi ini mengembalikan nomor grup tempat nilai bidang tertentu berada. Tipe data yang didukung adalah BIGINT, INT, FLOAT, DOUBLE, DECIMAL, dan DECIMAL(precision, scale) MaxCompute V2.0. Untuk informasi lebih lanjut, lihat Data type editions in MaxCompute V2.0. Fungsi ini adalah fungsi ekstensi di MaxCompute V2.0.

  • Parameter

    • expr: Wajib. Bidang yang ingin Anda tentukan nomor grupnya.

    • min_value: Wajib. Nilai minimum dari rentang grup.

    • max_value: Wajib. Nilai maksimum dari rentang grup. Nilai maksimum harus lebih besar dari nilai minimum.

    • num_buckets: Wajib. Jumlah grup. Nilai harus lebih besar dari 0.

  • Nilai Kembali

    Nilai bertipe BIGINT dikembalikan. Nilai berkisar dari 0 hingga jumlah grup yang ditentukan ditambah 1. Nilai dikembalikan berdasarkan aturan berikut:

    • Jika nilai expr kurang dari nilai min_value, 0 dikembalikan.

    • Jika nilai expr lebih besar dari nilai max_value, jumlah grup yang ditentukan ditambah 1 dikembalikan.

    • Jika nilai expr adalah NULL, NULL dikembalikan. Dalam kasus lain, nomor grup tempat nilai bidang berada dikembalikan. Nomor grup dihitung menggunakan rumus berikut: floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1).

    • Jika nilai min_value, max_value, atau num_buckets adalah NULL, NULL dikembalikan.

  • Contoh

    • Contoh 1: Tidak ada parameter input yang bernilai NULL. Perintah sampel:

      select key,value,width_bucket(value,100,500,5) as value_group
      from values 
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      Hasil berikut dikembalikan.

      +-------+--------+-------------+
      | key   | value  | value_group |
      +-------+--------+-------------+
      | 1     | 99     | 0           |
      | 2     | 100    | 1           |
      | 3     | 199    | 2           |
      | 4     | 200    | 2           |
      | 5     | 499    | 5           |
      | 6     | 500    | 6           |
      | 7     | 501    | 6           |
      | 8     | NULL   | NULL        |
      +-------+--------+-------------+
    • Contoh 2: Salah satu parameter input bernilai NULL. Perintah sampel:

      select key,value,width_bucket(value,100,500,null) as value_group
      from values
          (1,99),
          (2,100),
          (3,199),
          (4,200),
          (5,499),
          (6,500),
          (7,501),
          (8,NULL)
      as t(key,value);

      Hasil berikut dikembalikan.

      +------+-------+-------------+
      | key  | value | value_group |
      +------+-------+-------------+
      | 1    | 99    | NULL        |
      | 2    | 100   | NULL        |
      | 3    | 199   | NULL        |
      | 4    | 200   | NULL        |
      | 5    | 499   | NULL        |
      | 6    | 500   | NULL        |
      | 7    | 501   | NULL        |
      | 8    | NULL  | NULL        |
      +------+-------+-------------+

Referensi