全部产品
Search
文档中心

MaxCompute:Fungsi Lainnya

更新时间:Oct 24, 2025

MaxCompute SQL menyediakan berbagai fungsi tambahan yang sering digunakan selama pengembangan. Topik ini menjelaskan sintaksis, parameter, serta contoh penggunaan untuk fungsi seperti CAST, FAILIF, dan HASH.

Fungsi

Fitur

Ekspresi BETWEEN AND

Mengembalikan nilai yang berada di dalam atau di luar rentang tertentu.

Ekspresi CASE WHEN

Mengembalikan nilai berdasarkan hasil perhitungan ekspresi.

CAST

Mengonversi hasil dari suatu ekspresi ke tipe data yang ditentukan.

COALESCE

Mengembalikan nilai pertama yang bukan null dalam daftar parameter.

COMPRESS

Menggunakan algoritma GZIP untuk menekan parameter masukan bertipe STRING atau BINARY.

CRC32

Menghitung nilai pemeriksaan redundansi siklik dari nilai bertipe STRING atau BINARY.

DECOMPRESS

Menggunakan algoritma GZIP untuk mendekompresi parameter masukan bertipe BINARY.

FAILIF

Mengembalikan true atau pesan kesalahan dengan informasi kustom berdasarkan hasil evaluasi ekspresi.

GET_IDCARD_AGE

Mengembalikan usia dalam tahun berdasarkan nomor kartu identitas.

GET_IDCARD_BIRTHDAY

Mengembalikan tanggal lahir berdasarkan nomor kartu identitas.

GET_IDCARD_SEX

Mengembalikan jenis kelamin berdasarkan nomor kartu identitas.

GET_USER_ID

Mendapatkan ID akun saat ini.

HASH

Menghitung nilai hash berdasarkan parameter masukan.

IF

Memeriksa apakah kondisi tertentu benar.

MAX_PT

Mengembalikan nama partisi hash terbesar dalam tabel partisi.

NULLIF

Memeriksa apakah nilai dua parameter masukan sama.

NVL

Menentukan nilai kembali dari parameter yang nilainya adalah null.

ORDINAL

Mengurutkan nilai variabel masukan secara menaik dan mengembalikan nilai yang berada pada posisi tertentu.

PARTITION_EXISTS

Memeriksa apakah partisi tertentu ada dalam tabel.

SAMPLE

Memilih semua nilai kolom yang dibaca dan memfilter baris yang tidak memenuhi kondisi sampling.

SHA

Menghitung nilai hash SHA-1 dari nilai bertipe STRING atau BINARY.

SHA1

Menghitung nilai hash SHA-1 dari nilai bertipe STRING atau BINARY.

SHA2

Menghitung nilai hash SHA-2 dari nilai bertipe STRING atau BINARY.

STACK

Memisahkan grup parameter tertentu menjadi sejumlah baris tertentu.

STR_TO_MAP

Memisahkan string dengan pemisah tertentu dan mengembalikan pasangan kunci-nilai.

TABLE_EXISTS

Memeriksa apakah tabel tertentu ada.

TRANS_ARRAY

Menukar satu baris data menjadi beberapa baris. Fungsi ini adalah user-defined table-valued function (UDTF) yang mentranspos array dipisahkan oleh delimeter tetap dalam kolom menjadi beberapa baris.

TRANS_COLS

Menukar satu baris data menjadi beberapa baris. Fungsi ini adalah UDTF yang mentranspos kolom menjadi baris.

UNIQUE_ID

Mengembalikan ID unik. Fungsi ini lebih efisien daripada fungsi UUID.

UUID

Mengembalikan ID acak.

BASE64

  • Sintaksis

    string base64(binary <value>)
  • Deskripsi

    Mengonversi nilai value biner menjadi string yang dikodekan Base64.

  • Parameter

    value: Nilai wajib bertipe BINARY. Ini adalah nilai yang akan dikonversi.

  • Nilai Kembali

    Mengembalikan nilai bertipe STRING. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Konversi hasil biner dari cast ('alibaba' as binary) menjadi string yang dikodekan Base64. Pernyataan sampel:

      -- Nilai kembali adalah YWxpYmFiYQ==.
      select base64(cast ('alibaba' as binary));
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select base64(null);

Ekspresi BETWEEN AND

  • Sintaksis

    <a> [NOT] between <b> and <c>
  • Deskripsi

    Memeriksa apakah nilai dari a berada dalam rentang b dan c, atau tidak berada dalam rentang b dan c.

  • Parameter

    • a: Wajib. Bidang yang nilainya ingin Anda periksa.

    • b dan c: Wajib. Parameter ini menentukan rentang nilai. Tipe data parameter ini harus sama dengan tipe data parameter a.

  • Nilai Kembali

    Mengembalikan nilai yang memenuhi kondisi.

    Jika parameter a, b, atau c adalah null, fungsi ini mengembalikan null.

  • Contoh

    Tabel emp berisi data berikut.

    | empno | ename | job | mgr | hiredate| sal| comm | deptno |
    7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,,20
    7499,ALLEN,SALESMAN,7698,1981-02-20 00:00:00,1600,300,30
    7521,WARD,SALESMAN,7698,1981-02-22 00:00:00,1250,500,30
    7566,JONES,MANAGER,7839,1981-04-02 00:00:00,2975,,20
    7654,MARTIN,SALESMAN,7698,1981-09-28 00:00:00,1250,1400,30
    7698,BLAKE,MANAGER,7839,1981-05-01 00:00:00,2850,,30
    7782,CLARK,MANAGER,7839,1981-06-09 00:00:00,2450,,10
    7788,SCOTT,ANALYST,7566,1987-04-19 00:00:00,3000,,20
    7839,KING,PRESIDENT,,1981-11-17 00:00:00,5000,,10
    7844,TURNER,SALESMAN,7698,1981-09-08 00:00:00,1500,0,30
    7876,ADAMS,CLERK,7788,1987-05-23 00:00:00,1100,,20
    7900,JAMES,CLERK,7698,1981-12-03 00:00:00,950,,30
    7902,FORD,ANALYST,7566,1981-12-03 00:00:00,3000,,20
    7934,MILLER,CLERK,7782,1982-01-23 00:00:00,1300,,10
    7948,JACCKA,CLERK,7782,1981-04-12 00:00:00,5000,,10
    7956,WELAN,CLERK,7649,1982-07-20 00:00:00,2450,,10
    7956,TEBAGE,CLERK,7748,1982-12-30 00:00:00,1300,,10

    Kueri data di mana nilai sal berada antara 1000 dan 1500. Pernyataan sampel:

    select * from emp where sal between 1000 and 1500;

    Hasil berikut dikembalikan.

    +-------+-------+-----+------------+------------+------------+------------+------------+
    | empno | ename | job | mgr        | hiredate   | sal        | comm       | deptno     |
    +-------+-------+-----+------------+------------+------------+------------+------------+
    | 7521  | WARD  | SALESMAN | 7698  | 1981-02-22 00:00:00 | 1250.0     | 500.0      | 30  |
    | 7654  | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.0     | 1400.0     | 30 |
    | 7844  | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.0     | 0.0        | 30 |
    | 7876  | ADAMS | CLERK | 7788  | 1987-05-23 00:00:00 | 1100.0     | NULL     | 20   |
    | 7934  | MILLER | CLERK | 7782  | 1982-01-23 00:00:00 | 1300.0     | NULL      | 10  |
    | 7956  | TEBAGE | CLERK | 7748  | 1982-12-30 00:00:00 | 1300.0     | NULL      | 10  |
    +-------+-------+-----+------------+------------+------------+------------+------------+

Ekspresi CASE WHEN

  • Sintaksis

    MaxCompute menyediakan dua format case when:

    • case <value>
      when <value1> then <result1>
      when <value2> then <result2>
      ...
      else <resultn>
      end
    • case
      when (<_condition1>) then <result1>
      when (<_condition2>) then <result2>
      when (<_condition3>) then <result3>
      ...
      else <resultn>
      end
  • Deskripsi

    Mengembalikan nilai dari result berdasarkan evaluasi dari value atau _condition.

  • Parameter

    • value: Wajib. Nilai yang akan dibandingkan.

    • _condition: Wajib. Kondisi yang akan dievaluasi.

    • result: Wajib. Nilai yang akan dikembalikan.

  • Nilai Kembali

    • Jika semua nilai result adalah tipe BIGINT atau DOUBLE, tipe datanya dikonversi ke DOUBLE sebelum nilai dikembalikan.

    • Jika ada nilai result bertipe STRING, semua nilai dikonversi ke tipe STRING sebelum dikembalikan. Kesalahan akan dikembalikan jika konversi tipe data tidak didukung. Misalnya, data bertipe BOOLEAN tidak dapat dikonversi ke tipe STRING.

    • Konversi antar tipe data lainnya tidak didukung.

  • Contoh

    Tabel sale_detail berisi kolom shop_name string, customer_id string, total_price double. Tabel tersebut berisi data berikut.

    +------------+-------------+-------------+------------+------------+
    | shop_name  | customer_id | total_price | sale_date  | region     |
    +------------+-------------+-------------+------------+------------+
    | s1         | c1          | 100.1       | 2013       | china      |
    | s2         | c2          | 100.2       | 2013       | china      |
    | s3         | c3          | 100.3       | 2013       | china      |
    | null       | c5          | NULL        | 2014       | shanghai   |
    | s6         | c6          | 100.4       | 2014       | shanghai   |
    | s7         | c7          | 100.5       | 2014       | shanghai   |
    +------------+-------------+-------------+------------+------------+

    Pernyataan sampel:

    select 
    case  
    when region='china' then 'default_region'
    when region like 'shang%' then 'sh_region'
    end as region 
    from sale_detail;

    Hasil berikut dikembalikan.

    +------------+
    | region     |
    +------------+
    | default_region |
    | default_region |
    | default_region |
    | sh_region  |
    | sh_region  |
    | sh_region  |
    +------------+

CAST

  • Sintaksis

    cast(<expr> as <type>)
  • Deskripsi

    Mengonversi nilai dari expr ke tipe data target type.

  • Parameter

    • expr: Wajib. Ekspresi yang akan dikonversi.

    • type: Wajib. Tipe data target. Penggunaan:

      • cast(double as bigint): Mengonversi nilai bertipe DOUBLE menjadi BIGINT.

      • cast(string as bigint): Mengonversi nilai bertipe STRING menjadi BIGINT. Jika string hanya berisi bilangan bulat, maka langsung dikonversi ke tipe BIGINT. Jika string berisi bilangan titik mengambang atau dalam bentuk eksponensial, pertama-tama dikonversi ke tipe DOUBLE lalu ke BIGINT.

      • Format tanggal default yyyy-mm-dd hh:mi:ss digunakan untuk cast(string as datetime) atau cast(datetime as string).

  • Nilai Kembali

    • Mengembalikan nilai dengan tipe data target.

    • Jika Anda menjalankan perintah setproject odps.function.strictmode=false, fungsi ini mengembalikan angka sebelum huruf pertama.

    • Jika Anda menjalankan perintah setproject odps.function.strictmode=true, kesalahan akan dikembalikan.

    • Ketika Anda mengonversi nilai ke tipe DECIMAL, nol di akhir setelah titik desimal akan dihapus jika Anda menyetel odps.sql.decimal.tostring.trimzero=true. Nol di akhir dipertahankan jika Anda menyetel odps.sql.decimal.tostring.trimzero=false.

      Penting

      Parameter odps.sql.decimal.tostring.trimzero hanya berlaku ketika data diambil dari tabel dan tidak mempengaruhi nilai statis.

  • Contoh

    • Contoh 1: Penggunaan umum. Pernyataan sampel:

      -- Nilai kembali adalah 1. 
      select cast('1' as bigint);
    • Contoh 2: Mengonversi nilai bertipe STRING menjadi BOOLEAN. Jika nilai bertipe STRING adalah string kosong, false akan dikembalikan. Sebaliknya, true akan dikembalikan. Pernyataan sampel:

      • Nilai bertipe STRING adalah string kosong.

        select cast("" as boolean);
        -- Nilai kembali adalah false.
        +------+
        | _c0  |
        +------+
        | false |
        +------+
      • Nilai bertipe STRING adalah string tidak kosong.

        select cast("false" as boolean);
        -- Nilai kembali adalah true.
        +------+
        | _c0  |
        +------+
        | true |
        +------+
    • Contoh 3: Mengonversi string menjadi tanggal.

      -- Mengonversi string menjadi tanggal.
      select cast("2022-12-20" as date);
      -- Hasil berikut dikembalikan:
      +------------+
      | _c0        |
      +------------+
      | 2022-12-20 |
      +------------+
      
      -- Mengonversi string tanggal yang berisi bagian jam, menit, dan detik menjadi tanggal.
      select cast("2022-12-20 00:01:01" as date);
      -- Hasil berikut dikembalikan:
      +------------+
      | _c0        |
      +------------+
      | NULL       |
      +------------+
      -- Untuk memastikan tanggal valid dikembalikan, jalankan perintah berikut:
      set odps.sql.executionengine.enable.string.to.date.full.format= true;
      select cast("2022-12-20 00:01:01" as date);
      -- Hasil berikut dikembalikan:
      +------------+
      | _c0        |
      +------------+
      | 2022-12-20 |
      +------------+
      Catatan

      Secara default, parameter odps.sql.executionengine.enable.string.to.date.full.format disetel ke false. Jika Anda ingin mengonversi string tanggal yang berisi bagian jam, menit, dan detik, Anda harus menyetel parameter ini ke true.

    • Contoh 4: (Penggunaan salah) Jika konversi tipe gagal atau tidak didukung, kesalahan akan dikembalikan. Pernyataan sampel salah:

      select cast('abc' as bigint);
    • Contoh 5: setproject odps.function.strictmode=false ditentukan.

      setprojectodps.function.strictmode=false;
      select cast('123abc'as bigint);
      -- Hasil berikut dikembalikan:
      +------------+
      |_c0|
      +------------+
      |123|
      +------------+
    • Contoh 6: setproject odps.function.strictmode=true ditentukan.

      setprojectodps.function.strictmode=true;
      select cast('123abc' as bigint);
      -- Hasil berikut dikembalikan:
      FAILED:ODPS-0130071:[0,0]Semanticanalysisexception-physicalplangenerationfailed:java.lang.NumberFormatException:ODPS-0123091:Illegaltypecast-Infunctioncast,value'123abc'cannotbecastedfromStringtoBigint.
    • Contoh 7: Parameter odps.sql.decimal.tostring.trimzero ditentukan.

      -- Buat tabel.
      create table mf_dot (dcm1 decimal(38,18),
                           dcm2 decimal(38,18));
      -- Masukkan data ke dalam tabel.
      insert into table mf_dot values (12.45500BD,12.3400BD);
      
      -- Setel parameter odps.sql.decimal.tostring.trimzero ke true, atau jangan konfigurasikan parameter odps.sql.decimal.tostring.trimzero.
      set odps.sql.decimal.tostring.trimzero=true;
      -- Hapus angka 0 di akhir desimal.
      select cast(round(dcm1,3) as string),cast(round(dcm2,3) as string) from mf_dot;
      -- Hasil berikut dikembalikan:
      +------------+------------+
      | _c0        | _c1        |
      +------------+------------+
      | 12.455     | 12.34      |
      +------------+------------+
      
      -- Setel parameter odps.sql.decimal.tostring.trimzero ke false.
      set odps.sql.decimal.tostring.trimzero=false;
      -- Pertahankan angka 0 di akhir desimal.
      select cast(round(dcm1,3) as string),cast(round(dcm2,3) as string) from mf_dot;
      -- Hasil berikut dikembalikan:
      +------------+------------+
      | _c0        | _c1        |
      +------------+------------+
      | 12.455     | 12.340     |
      +------------+------------+
      
      -- Parameter odps.sql.decimal.tostring.trimzero tidak berlaku untuk nilai statis.
      set odps.sql.decimal.tostring.trimzero=false;
      select cast(round(12345.120BD,3) as string);
      -- Hasil berikut dikembalikan:
      +------------+
      | _c0        |
      +------------+
      | 12345.12   |
      +------------+

COALESCE

  • Sintaksis

    coalesce(<expr1>, <expr2>, ...)
  • Deskripsi

    Mengembalikan nilai non-null pertama dalam daftar ekspresi <expr1>, <expr2>, ....

  • Parameter

    expr: Wajib. Ekspresi yang akan dievaluasi.

  • Nilai Kembali

    Tipe data nilai kembali sama dengan tipe data parameter masukan.

  • Contoh

    • Contoh 1: Contoh penggunaan umum. Pernyataan sampel:

      -- Nilai kembali adalah 1.
      select coalesce(null,null,1,null,3,5,7);
    • Contoh 2: Jika tipe data nilai parameter tidak dapat ditentukan, kesalahan akan dikembalikan.

      • Pernyataan sampel salah

        -- Nilai abc tidak dapat diidentifikasi karena tipe data nilai abc tidak didefinisikan. Kesalahan dikembalikan.
        select coalesce(null,null,1,null,abc,5,7);
      • Pernyataan sampel benar

        select coalesce(null,null,1,null,'abc',5,7);
    • Contoh 3: Jika data tidak dibaca dari tabel dan semua parameter masukan adalah null, kesalahan akan dikembalikan. Pernyataan sampel salah:

      -- Kesalahan dikembalikan karena nilai non-null tidak ada.
      select coalesce(null,null,null,null);
    • Contoh 4: Jika data dibaca dari tabel dan semua parameter masukan adalah null, fungsi ini mengembalikan null.

      Tabel data asli:

      +-----------+-------------+------------+
      | shop_name | customer_id | toal_price |
      +-----------+-------------+------------+
      | ad        | 10001       | 100.0      |
      | jk        | 10002       | 300.0      |
      | ad        | 10003       | 500.0      |
      | tt        | NULL        | NULL       |
      +-----------+-------------+------------+

      Nilai bidang untuk toko tt di tabel sumber semuanya null. Setelah pernyataan berikut dieksekusi, null dikembalikan.

      select coalesce(customer_id,total_price) from sale_detail where shop_name='tt';

COMPRESS

  • Sintaksis

    binary compress(string <str>)
    binary compress(binary <bin>)
  • Deskripsi

    Menekan str atau bin menggunakan algoritma GZIP.

  • Parameter

    • str: Nilai wajib bertipe STRING.

    • bin: Nilai wajib bertipe BINARY.

  • Nilai Kembali

    Mengembalikan nilai bertipe BINARY. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Gunakan algoritma GZIP untuk menekan string hello. Pernyataan sampel:

      -- Nilai kembali adalah =1F=8B=08=00=00=00=00=00=00=03=CBH=CD=C9=C9=07=00=86=A6=106=05=00=00=00.
      select compress('hello');
    • Contoh 2: Parameter masukan adalah string kosong. Pernyataan sampel:

      -- Nilai kembali adalah =1F=8B=08=00=00=00=00=00=00=03=03=00=00=00=00=00=00=00=00=00.
      select compress('');
    • Contoh 3: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select compress(null);

CRC32

  • Sintaksis

    bigint crc32(string|binary <expr>)
  • Deskripsi

    Menghitung nilai pemeriksaan redundansi siklik untuk expr. Nilai `expr` harus bertipe STRING atau BINARY.

  • Parameter

    expr: Nilai wajib bertipe STRING atau BINARY.

  • Nilai Kembali

    Mengembalikan nilai bertipe BIGINT. Nilai kembali ditentukan oleh aturan berikut:

    • Jika parameter masukan adalah null, fungsi ini mengembalikan null.

    • Jika parameter masukan adalah string kosong, 0 dikembalikan.

  • Contoh

    • Contoh 1: Hitung nilai pemeriksaan redundansi siklik dari string ABC. Pernyataan sampel:

      -- Nilai kembali adalah 2743272264.
      select crc32('ABC');
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select crc32(null);

DECODE

  • Sintaksis

    decode(<expression>, <search>, <result>[, <search>, <result>]...[, <default>])
  • Deskripsi

    Menerapkan logika kondisional if-then-else.

  • Parameter

    • expression: Wajib. Ekspresi yang akan dibandingkan.

    • search: Wajib. Item pencarian yang akan dibandingkan dengan expression.

    • result: Wajib. Nilai yang akan dikembalikan jika search cocok dengan expression.

    • default: Opsional. Jika tidak ada item pencarian yang cocok dengan ekspresi, nilai default akan dikembalikan. Jika parameter ini tidak ditentukan, null akan dikembalikan.

    Catatan
    • Semua nilai result, kecuali nilai NULL, harus memiliki tipe data yang sama. Kesalahan akan dikembalikan jika tipe datanya berbeda.

    • Nilai dari search dan expression harus memiliki tipe data yang sama. Jika tidak, kesalahan akan dikembalikan.

  • Nilai Kembali

    • Jika item pencarian cocok dengan ekspresi, hasil result yang sesuai akan dikembalikan.

    • Jika tidak ada item pencarian yang cocok dengan ekspresi, nilai default akan dikembalikan.

    • Jika parameter default tidak ditentukan, null akan dikembalikan.

    • Jika beberapa item search cocok dengan ekspresi, hasil dari item pertama yang cocok akan dikembalikan.

    • MaxCompute SQL biasanya mengembalikan null ketika mengevaluasi NULL=NULL. Namun, fungsi DECODE memperlakukan dua nilai null sebagai sama.

  • Contoh

    Tabel sale_detail berisi kolom shop_name string, customer_id string, total_price double. Tabel tersebut berisi data berikut.

    +------------+-------------+-------------+------------+------------+
    | shop_name  | customer_id | total_price | sale_date  | region     |
    +------------+-------------+-------------+------------+------------+
    | s1         | c1          | 100.1       | 2013       | china      |
    | s2         | c2          | 100.2       | 2013       | china      |
    | s3         | c3          | 100.3       | 2013       | china      |
    | null       | c5          | NULL        | 2014       | shanghai   |
    | s6         | c6          | 100.4       | 2014       | shanghai   |
    | s7         | c7          | 100.5       | 2014       | shanghai   |
    +------------+-------------+-------------+------------+------------+

    Pernyataan sampel:

    -- Jika nilai customer_id adalah c1, Taobao dikembalikan. Jika nilainya c2, Alipay dikembalikan. Jika nilainya c3, Aliyun dikembalikan. Jika nilainya null, N/A dikembalikan. Dalam kasus lain, Others dikembalikan.
    select
    decode(customer_id,
    'c1', 'Taobao',
    'c2', 'Alipay',
    'c3', 'Aliyun',
    Null, 'N/A',
    'Others') as result
    from sale_detail;
    -- Pernyataan sebelumnya setara dengan pernyataan berikut:
    if customer_id = c1 then
    result := 'Taobao';
    elsif customer_id = c2 then
    result := 'Alipay';
    elsif customer_id = c3 then
    result := 'Aliyun';
    ...
    else
    result := 'Others';
    end if;

    Hasil berikut dikembalikan.

    +------------+
    | result     |
    +------------+
    | Others     |
    | Others     |
    | Others     |
    | Taobao     |
    | Alipay     |
    | Aliyun     |
    +------------+

DECOMPRESS

  • Sintaksis

    binary decompress(binary <bin>)
  • Deskripsi

    Mendekompresi bin menggunakan algoritma GZIP.

  • Parameter

    bin: Nilai wajib bertipe BINARY.

  • Nilai Kembali

    Mengembalikan nilai bertipe BINARY. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Mendekompresi string terkompresi hello, world dan mengonversi hasilnya menjadi string. Pernyataan sampel:

      -- Nilai kembali adalah hello, world.
      select cast(decompress(compress('hello, world')) as string);
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select decompress(null);

GET_IDCARD_AGE

  • Sintaksis

    get_idcard_age(<idcardno>)
  • Deskripsi

    Menghitung usia saat ini berdasarkan nomor kartu identitas. Usia dihitung dengan mengurangi tahun lahir dari tahun saat ini.

  • Parameter

    idcardno: Nomor kartu identitas 15 digit atau 18 digit wajib bertipe STRING. Fungsi ini memvalidasi nomor kartu identitas berdasarkan kode provinsi dan digit terakhir. Jika validasi gagal, fungsi ini mengembalikan null.

  • Nilai Kembali

    Mengembalikan nilai bertipe BIGINT. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

GET_IDCARD_BIRTHDAY

  • Sintaksis

    get_idcard_birthday(<idcardno>)
  • Deskripsi

    Mengambil tanggal lahir dari nomor kartu identitas.

  • Parameter

    idcardno: Nomor kartu identitas 15 digit atau 18 digit wajib bertipe STRING. Fungsi ini memvalidasi nomor kartu identitas berdasarkan kode provinsi dan digit terakhir. Jika validasi gagal, fungsi ini mengembalikan null.

  • Nilai Kembali

    Mengembalikan nilai bertipe DATETIME. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

GET_IDCARD_SEX

  • Sintaksis

    get_idcard_sex(<idcardno>)
  • Deskripsi

    Mengambil jenis kelamin dari nomor kartu identitas. Nilai kembali yang valid adalah M (laki-laki) dan F (perempuan).

  • Parameter

    idcardno: Nomor kartu identitas 15 digit atau 18 digit wajib bertipe STRING. Fungsi ini memvalidasi nomor kartu identitas berdasarkan kode provinsi dan digit terakhir. Jika validasi gagal, fungsi ini mengembalikan null.

  • Nilai Kembali

    Mengembalikan nilai bertipe STRING. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

GET_USER_ID

  • Sintaksis

    get_user_id()
  • Deskripsi

    Mendapatkan ID akun saat ini, juga dikenal sebagai user ID (UID).

  • Parameter

    Tidak ada parameter yang diperlukan.

  • Nilai Kembali

    Mengembalikan ID akun saat ini.

  • Contoh

    select get_user_id();
    -- Hasil berikut dikembalikan.
    +------------+
    | _c0        |
    +------------+
    | 1117xxxxxxxx8519 |
    +------------+

GREATEST

  • Sintaksis

    greatest(<var1>, <var2>[,...])
  • Deskripsi

    Mengembalikan nilai terbesar dari daftar parameter masukan.

  • Parameter

    var1 dan var2: Wajib. Parameter harus bertipe BIGINT, DOUBLE, DECIMAL, DATETIME, atau STRING.

  • Nilai Kembali

    • Mengembalikan nilai terbesar di antara parameter masukan. Jika tidak diperlukan konversi implisit, nilai kembali memiliki tipe data yang sama dengan parameter masukan.

    • Nilai null dianggap sebagai nilai minimum.

    • Jika parameter input memiliki tipe data yang berbeda, parameter dengan tipe DOUBLE, BIGINT, DECIMAL, dan STRING akan dikonversi ke tipe DOUBLE untuk perbandingan. Parameter dengan tipe STRING dan DATETIME akan dikonversi ke tipe DATETIME untuk perbandingan. Konversi implisit untuk tipe data lainnya tidak didukung.

    • Jika set odps.sql.hive.compatible=true; ditentukan dan parameter masukan adalah null, fungsi ini mengembalikan null.

HASH

  • Sintaksis

    • Jika proyek MaxCompute dalam mode kompatibel Hive, gunakan sintaksis berikut.

      int hash(<value1>, <value2>[, ...]);
    • Jika proyek MaxCompute tidak dalam mode kompatibel Hive, gunakan sintaksis berikut.

      bigint hash(<value1>, <value2>[, ...]);
  • Deskripsi

    Mengembalikan nilai hash berdasarkan value1 dan value2.

  • Parameter

    value1 dan value2: Wajib. Parameter untuk operasi hash yang ingin Anda lakukan. Parameter dapat memiliki tipe data yang berbeda. Tipe data yang didukung berbeda antara mode kompatibel Hive dan mode non-kompatibel Hive:

    • Mode kompatibel Hive: TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, STRING, CHAR, VARCHAR, DATETIME, dan DATE.

    • Mode non-kompatibel Hive: BIGINT, DOUBLE, BOOLEAN, STRING, dan DATETIME.

    Catatan

    Jika dua parameter masukan identik, nilai hash yang dikembalikan juga identik. Namun, jika dua nilai hash yang dikembalikan identik, parameter masukan belum tentu identik karena kemungkinan tabrakan hash.

  • Nilai Kembali

    Mengembalikan nilai bertipe INT atau BIGINT. Jika parameter masukan adalah string kosong atau null, 0 dikembalikan.

  • Contoh

    • Contoh 1: Hitung nilai hash dari parameter masukan dengan tipe data yang sama. Pernyataan sampel:

      -- Nilai kembali adalah 66.
      select hash(0, 2, 4);
    • Contoh 2: Hitung nilai hash dari parameter masukan dengan tipe data yang berbeda. Pernyataan sampel:

      -- Nilai kembali adalah 97.
      select hash(0, 'a');
    • Contoh 3: Parameter masukan adalah string kosong atau null. Pernyataan sampel:

      -- Nilai kembali adalah 0.
      select hash(0, null);
      -- Nilai kembali adalah 0.
      select hash(0, '');

IF

  • Sintaksis

    if(<testCondition>, <valueTrue>, <valueFalseOrNull>)
  • Deskripsi

    Memeriksa apakah testCondition benar. Jika `testCondition` benar, fungsi ini mengembalikan valueTrue. Sebaliknya, mengembalikan valueFalseOrNull.

  • Parameter

    • testCondition: Wajib. Ekspresi yang akan dievaluasi. Nilainya harus bertipe BOOLEAN.

    • valueTrue: Wajib. Nilai yang akan dikembalikan jika testCondition benar.

    • valueFalseOrNull: Nilai yang akan dikembalikan jika testCondition salah. Anda dapat menyetel parameter ini ke null.

  • Nilai Kembali

    Tipe data nilai kembali sama dengan tipe data dari valueTrue atau valueFalseOrNull.

  • Contoh

    -- Nilai kembali adalah 200.
    select if(1=2, 100, 200); 

LEAST

  • Sintaksis

    least(<var1>, <var2>[,...])
  • Deskripsi

    Mengembalikan nilai terkecil dari daftar parameter masukan.

  • Parameter

    var: Wajib. Parameter masukan. Parameter harus bertipe BIGINT, DOUBLE, DECIMAL, DATETIME, atau STRING.

  • Nilai Kembali

    • Mengembalikan nilai terkecil di antara parameter masukan. Jika tidak diperlukan konversi implisit, nilai kembali memiliki tipe data yang sama dengan parameter masukan.

    • Jika terjadi konversi tipe data antara DOUBLE, BIGINT, dan STRING, nilai bertipe DOUBLE akan dikembalikan. Jika terjadi konversi tipe data antara STRING dan DATETIME, nilai bertipe DATETIME akan dikembalikan. Konversi implisit tipe data lainnya tidak didukung.

    • Nilai null dianggap sebagai nilai minimum.

    • Jika semua parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    -- Nilai kembali adalah 2.
    select least(5, 2, 7);

MAX_PT

  • Sintaksis

    MAX_PT(<table_full_name>)
  • Deskripsi

    Mengembalikan nama partisi terbesar yang berisi data dalam tabel partisi. Partisi diurutkan secara alfabetis. Fungsi kemudian membaca data dari partisi ini.

  • Peringatan

    • Fungsi MAX_PT juga dapat diimplementasikan menggunakan pernyataan SQL standar. Misalnya, SELECT * FROM table WHERE pt=MAX_PT("table"); dapat ditulis ulang sebagai SELECT * FROM table WHERE pt = (SELECT MAX(pt) FROM table);.

      Catatan

      MaxCompute tidak menyediakan fungsi MIN_PT. Untuk mendapatkan partisi terkecil yang berisi data dalam tabel partisi, Anda tidak dapat menggunakan pernyataan SQL SELECT * FROM table WHERE pt=MIN_PT("table"); dengan cara yang sama seperti Anda menggunakan fungsi MAX_PT. Sebagai gantinya, gunakan pernyataan SQL standar SELECT * FROM table WHERE pt= (SELECT MIN(pt) FROM table);.

    • Jika semua partisi dalam tabel kosong, fungsi MAX_PT gagal. Pastikan setidaknya satu partisi berisi data.

    • Fungsi `MAX_PT` didukung untuk tabel asing OSS dan tabel internal. Perilaku fungsi sama untuk kedua jenis tabel.

  • Parameter

    table_full_name: Nilai wajib bertipe STRING yang menentukan nama tabel. Anda harus memiliki izin baca pada tabel tersebut.

  • Nilai Kembali

    Mengembalikan nama partisi terbesar.

    Catatan

    Partisi yang dibuat menggunakan pernyataan ALTER TABLE tetapi tidak berisi data tidak akan dikembalikan.

  • Contoh

    • Contoh 1: Tabel tbl adalah tabel partisi dengan partisi 20120901 dan 20120902, keduanya berisi data. Dalam pernyataan berikut, fungsi MAX_PT mengembalikan '20120902'. Pernyataan SQL MaxCompute membaca data dari partisi pt='20120902'. Pernyataan sampel:

      SELECT * FROM tbl WHERE pt= MAX_PT('tbl');
      -- Pernyataan sebelumnya setara dengan pernyataan berikut:
      SELECT * FROM tbl WHERE pt= (SELECT MAX(pt) FROM tbl);
    • Contoh 2: Jika sebuah tabel memiliki beberapa tingkat partisi, gunakan pernyataan SQL standar untuk mengambil data dari partisi terbesar. Pernyataan sampel:

      SELECT * FROM table WHERE pt1 = (SELECT MAX(pt1) FROM table) AND pt2 = (SELECT MAX(pt2) FROM table WHERE pt1= (SELECT MAX(pt1) FROM table));

NULLIF

  • Sintaksis

    T nullif(T <expr1>, T <expr2>)
  • Deskripsi

    Membandingkan nilai dari expr1 dan expr2. Jika nilainya sama, fungsi ini mengembalikan null. Jika nilainya berbeda, fungsi ini mengembalikan nilai dari expr1.

  • Parameter

    expr1 dan expr2: Ekspresi wajib dengan tipe data apa pun. T menentukan tipe data masukan, yang bisa berupa tipe data apa pun yang didukung oleh MaxCompute.

  • Nilai Kembali

    Mengembalikan nilai dari expr1 atau null.

  • Contoh

    -- Nilai kembali adalah 2.
    select nullif(2, 3);
    -- Nilai kembali adalah null.
    select nullif(2, 2);
    -- Nilai kembali adalah 3.
    select nullif(3, null);

NVL

  • Sintaksis

    nvl(T <value>, T <default_value>)
  • Deskripsi

    Mengembalikan default_value jika value adalah null. Sebaliknya, fungsi ini mengembalikan value. Parameter `value` dan `default_value` harus memiliki tipe data yang sama.

  • Parameter

    • value: Parameter masukan wajib. T menentukan tipe data masukan, yang bisa berupa tipe data apa pun yang didukung oleh MaxCompute.

    • default_value: Nilai wajib yang digunakan untuk mengganti null. Tipe data dari `default_value` harus sama dengan tipe data dari value.

  • Contoh

    Tabel bernama t_data mencakup tiga kolom: c1 string, c2 bigint, dan c3 datetime. Tabel ini berisi data sebagai berikut.

    +----+------------+------------+
    | c1 | c2 | c3 |
    +----+------------+------------+
    | NULL | 20 | 2017-11-13 05:00:00 |
    | ddd | 25 | NULL |
    | bbb | NULL | 2017-11-12 08:00:00 |
    | aaa | 23 | 2017-11-11 00:00:00 |
    +----+------------+------------+

    Setelah fungsi nvl dipanggil, nilai null di c1 diganti dengan `00000`, nilai null di c2 diganti dengan `0`, dan nilai null di c3 diganti dengan tanda hubung (-). Pernyataan sampel:

    select nvl(c1,'00000'),nvl(c2,0),nvl(c3,'-') from nvl_test;
    -- Hasil berikut dikembalikan.
    +-----+------------+-----+
    | _c0 | _c1 | _c2 |
    +-----+------------+-----+
    | 00000 | 20 | 2017-11-13 05:00:00 |
    | ddd | 25 | - |
    | bbb | 0 | 2017-11-12 08:00:00 |
    | aaa | 23 | 2017-11-11 00:00:00 |
    +-----+------------+-----+

ORDINAL

  • Sintaksis

    ordinal(bigint <nth>, <var1>, <var2>[,...])
  • Deskripsi

    Mengurutkan variabel masukan secara menaik dan mengembalikan nilai pada peringkat nth.

  • Parameter

    • nth: Nilai wajib bertipe BIGINT yang menentukan peringkat nilai yang akan dikembalikan. Peringkat dimulai dari 1. Jika parameter ini adalah null, fungsi mengembalikan null.

    • var: Nilai wajib yang akan diurutkan. Nilainya harus bertipe BIGINT, DOUBLE, DATETIME, atau STRING.

  • Nilai Kembali

    • Mengembalikan nilai pada peringkat nth. Jika tidak diperlukan konversi implisit, nilai kembali memiliki tipe data yang sama dengan parameter masukan.

    • Jika terjadi konversi tipe data antara DOUBLE, BIGINT, dan STRING, nilai bertipe DOUBLE akan dikembalikan. Jika terjadi konversi tipe data antara STRING dan DATETIME, nilai bertipe DATETIME akan dikembalikan. Konversi implisit tipe data lainnya tidak didukung.

    • Nilai null dianggap sebagai nilai minimum.

  • Contoh

    -- Nilai kembali adalah 3.
    SELECT ordinal(3, 1, 3, 7, 5, 2, 4, 6); 

PARTITION_EXISTS

  • Sintaksis

    boolean partition_exists(string <table_name>, string... <partitions>)
  • Deskripsi

    Memeriksa apakah partisi tertentu ada dalam tabel.

  • Parameter

    • table_name: Nama tabel wajib bertipe STRING. Anda dapat menentukan nama proyek dalam nama tabel, seperti my_proj.my_table. Jika Anda tidak menentukan nama proyek, proyek saat ini digunakan.

    • partitions: Nama partisi wajib bertipe STRING. Anda harus menentukan nilai kolom kunci partisi dalam urutan yang sama seperti yang didefinisikan dalam tabel. Jumlah nilai harus sesuai dengan jumlah kolom kunci partisi.

  • Nilai Kembali

    Mengembalikan nilai bertipe BOOLEAN. Fungsi mengembalikan `True` jika partisi yang ditentukan ada. Sebaliknya, mengembalikan `False`.

  • Contoh

    -- Buat tabel partisi bernama foo.
    create table foo (id bigint) partitioned by (ds string, hr string);
    -- Tambahkan partisi ke tabel partisi foo.
    alter table foo add partition (ds='20190101', hr='1');
    -- Periksa apakah partisi ds='20190101' dan hr='1' ada. True dikembalikan.
    select partition_exists('foo', '20190101', '1');

SAMPLE

  • Sintaksis

    boolean sample(<x>, <y>, [<column_name1>, <column_name2>[,...]])
  • Deskripsi

    Memilih semua nilai yang dibaca dari column_name berdasarkan x dan y, dan memfilter baris yang tidak memenuhi kondisi sampling.

  • Parameter

    • x dan y: x wajib. `x` dan `y` harus berupa konstanta integer lebih besar dari 0 dan bertipe BIGINT. Parameter ini menunjukkan bahwa nilai dibagi menjadi x bagian berdasarkan fungsi hash, dan bagian ke-y dipilih.

      y opsional. Jika y tidak ditentukan, bagian pertama dipilih secara default, dan Anda tidak perlu menentukan column_name.

      Kesalahan dikembalikan jika x atau y adalah tipe data lain, kurang dari atau sama dengan 0, atau jika y lebih besar dari x. Jika x atau y adalah null, fungsi mengembalikan null.

    • column_name: Opsional. Nama kolom tempat sampling dilakukan. Jika parameter ini tidak ditentukan, sampling acak dilakukan berdasarkan nilai x dan y. Kolom dapat memiliki tipe data apa pun, dan nilainya bisa null. Konversi implisit tidak dilakukan. Kesalahan dikembalikan jika column_name itu sendiri adalah null.

      Catatan
      • Untuk mencegah kesenjangan data yang disebabkan oleh nilai null, hashing seragam dilakukan pada nilai null dalam column_name di seluruh x bagian. Jika column_name tidak ditentukan dan jumlah data kecil, hasil keluaran mungkin tidak seragam. Dalam hal ini, kami menyarankan Anda menentukan column_name untuk mendapatkan hasil keluaran yang seragam.

      • Sampling acak hanya dapat dilakukan pada kolom bertipe BIGINT, DATETIME, BOOLEAN, DOUBLE, STRING, BINARY, CHAR, dan VARCHAR.

  • Nilai Kembali

    Mengembalikan nilai bertipe BOOLEAN.

  • Contoh

    Tabel tbla berisi kolom cola.

    -- Nilai dalam kolom cola dibagi menjadi empat bagian berdasarkan fungsi hash, dan bagian pertama digunakan. True dikembalikan.
    select * from tbla where sample (4, 1 , cola);
    -- Nilai dalam setiap baris di-hash secara acak menjadi empat bagian, dan bagian kedua digunakan. True dikembalikan.
    select * from tbla where sample (4, 2);

SHA

  • Sintaksis

    string sha(string|binary <expr>)
  • Deskripsi

    Menghitung nilai hash SHA-1 dari expr, yang harus bertipe STRING atau BINARY, dan mengembalikan nilai hash sebagai string heksadesimal.

  • Parameter

    expr: Nilai wajib bertipe STRING atau BINARY.

  • Nilai Kembali

    Mengembalikan nilai bertipe STRING. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Hitung nilai hash SHA dari string ABC. Pernyataan sampel:

      -- Nilai kembali adalah 3c01bdbb26f358bab27f267924aa2c9a03fcfdb8.
      select sha('ABC');
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select sha(null);

SHA1

  • Sintaksis

    string sha1(string|binary <expr>)
  • Deskripsi

    Menghitung nilai hash SHA-1 dari expr, yang harus bertipe STRING atau BINARY, dan mengembalikan nilai hash sebagai string heksadesimal.

  • Parameter

    expr: Nilai wajib bertipeSTRING atau BINARY.

  • Nilai Kembali

    Mengembalikan nilai bertipe STRING. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Hitung nilai hash SHA-1 dari string ABC. Pernyataan sampel:

      -- Nilai kembali adalah 3c01bdbb26f358bab27f267924aa2c9a03fcfdb8.
      select sha1('ABC');
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select sha1(null);

SHA2

  • Sintaksis

    string sha2(string|binary <expr>, bigint <number>)
  • Deskripsi

    Menghitung nilai hash SHA-2 dari expr, yang harus bertipe STRING atau BINARY, dan mengembalikan nilai hash dalam format yang ditentukan oleh number.

  • Parameter

    • expr: Nilai wajib bertipe STRING atau BINARY.

    • number: Nilai wajib bertipe BIGINT yang menentukan panjang bit hash. Nilai valid adalah 224, 256, 384, 512, dan 0. Nilai kembali untuk 256 sama dengan nilai kembali untuk 0.

  • Nilai Kembali

    Mengembalikan nilai bertipe STRING. Nilai kembali ditentukan oleh aturan berikut:

    • Jika parameter masukan adalah null, fungsi ini mengembalikan null.

    • Jika nilai number tidak berada dalam rentang valid, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Hitung nilai hash SHA-2 dari string ABC. Pernyataan sampel:

      -- Nilai kembali adalah b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78.
      select sha2('ABC', 256);
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select sha2('ABC', null);

STACK

  • Sintaksis

    stack(n, expr1, ..., exprk) 
  • Deskripsi

    Memisahkan expr1, ..., exprk menjadi `n` baris. Nama kolom keluaran secara default adalah col0, col1....

  • Parameter

    • n: Wajib. Jumlah baris yang akan dibuat.

    • expr: Ekspresi wajib yang akan dipisahkan. expr1, ..., exprk harus bertipe integer. Jumlah ekspresi harus merupakan kelipatan bulat dari n sehingga dapat dipisahkan menjadi n baris lengkap. Jika tidak, kesalahan akan dikembalikan.

  • Nilai Kembali

    Mengembalikan dataset sebanyak `n` baris. Jumlah kolom adalah total jumlah ekspresi dibagi dengan `n`.

  • Contoh

    -- Pisahkan grup parameter 1, 2, 3, 4, 5, 6 menjadi tiga baris.
    select stack(3, 1, 2, 3, 4, 5, 6);
    -- Hasil berikut dikembalikan.
    +------+------+
    | col0 | col1 |
    +------+------+
    | 1    | 2    |
    | 3    | 4    |
    | 5    | 6    |
    +------+------+
    
    -- Pisahkan 'A',10,date '2015-01-01','B',20,date '2016-01-01' menjadi dua baris.
    select stack(2,'A',10,date '2015-01-01','B',20, date '2016-01-01') as (col0,col1,col2);
    -- Hasil berikut dikembalikan.
    +------+------+------+
    | col0 | col1 | col2 |
    +------+------+------+
    | A    | 10   | 2015-01-01 |
    | B    | 20   | 2016-01-01 |
    +------+------+------+
    
    -- Pisahkan a, b, c, dan d menjadi dua baris. Jika tabel sumber berisi beberapa baris, fungsi ini dipanggil untuk setiap baris.
    select stack(2,a,b,c,d) as (col,value)
    from values 
        (1,1,2,3,4),
        (2,5,6,7,8),
        (3,9,10,11,12),
        (4,13,14,15,null)
    as t(key,a,b,c,d);
    -- Hasil berikut dikembalikan.
    +------+-------+
    | col  | value |
    +------+-------+
    | 1    | 2     |
    | 3    | 4     |
    | 5    | 6     |
    | 7    | 8     |
    | 9    | 10    |
    | 11   | 12    |
    | 13   | 14    |
    | 15   | NULL  |
    +------+-------+
    
    -- Gunakan fungsi ini dengan klausa lateral view.
    select tf.* from (select 0) t lateral view stack(2,'A',10,date '2015-01-01','B',20, date '2016-01-01') tf as col0,col1,col2;
    -- Hasil berikut dikembalikan.
    +------+------+------+
    | col0 | col1 | col2 |
    +------+------+------+
    | A    | 10   | 2015-01-01 |
    | B    | 20   | 2016-01-01 |
    +------+------+------+

STR_TO_MAP

  • Sintaksis

    str_to_map([string <mapDupKeyPolicy>,] <text> [, <delimiter1> [, <delimiter2>]])
  • Deskripsi

    Memisahkan text menjadi pasangan kunci-nilai menggunakan delimiter1 dan kemudian memisahkan kunci dari nilai dalam setiap pasangan menggunakan delimiter2.

  • Parameter

    • mapDupKeyPolicy: Opsional. Nilai bertipe STRING. Parameter ini menentukan metode yang digunakan untuk memproses kunci duplikat. Nilai valid:

      • exception: Kesalahan dikembalikan.

      • last_win: Kunci terakhir menimpa kunci sebelumnya.

      Anda juga dapat menentukan parameter odps.sql.map.key.dedup.policy pada tingkat sesi untuk mengonfigurasi metode yang digunakan untuk memproses kunci duplikat. Misalnya, Anda dapat menyetel odps.sql.map.key.dedup.policy ke exception. Jika Anda tidak menentukan parameter ini, nilai default last_win digunakan.

      Catatan

      Implementasi perilaku MaxCompute ditentukan berdasarkan mapDupKeyPolicy. Jika Anda tidak menentukan mapDupKeyPolicy, nilai odps.sql.map.key.dedup.policy digunakan.

    • text: String wajib yang akan dipisahkan. Nilainya harus bertipe STRING.

    • delimiter1: Pemisah opsional bertipe STRING. Jika parameter ini tidak ditentukan, koma (,) digunakan secara default.

    • delimiter2: Pemisah opsional bertipe STRING. Jika parameter ini tidak ditentukan, tanda sama dengan (=) digunakan secara default.

      Catatan

      Jika pemisah adalah ekspresi reguler atau karakter khusus, Anda harus meloloskannya dengan dua garis miring terbalik (\\). Karakter khusus yang dapat digunakan sebagai pemisah termasuk titik dua (:), titik (.), tanda tanya (?), tanda tambah (+), dan tanda bintang (*).

  • Nilai Kembali

    Mengembalikan nilai bertipe map<string, string>. Fungsi memisahkan string text menggunakan delimiter1 dan delimiter2.

  • Contoh

    -- Nilai kembali adalah {test1:1, test2:2}.
    select str_to_map('test1&1-test2&2','-','&');
    -- Nilai kembali adalah {test1:1, test2:2}.
    select str_to_map("test1.1,test2.2", ",", "\\.");
    -- Nilai kembali adalah {test1:1, test2:3}.
    select str_to_map("test1.1,test2.2,test2.3", ",", "\\.");

TABLE_EXISTS

  • Sintaksis

    boolean table_exists(string <table_name>)
  • Deskripsi

    Memeriksa apakah tabel tertentu ada.

  • Parameter

    table_name: Nama tabel wajib bertipe STRING. Anda dapat menentukan nama proyek dalam nama tabel, seperti my_proj.my_table. Jika Anda tidak menentukan nama proyek, proyek saat ini digunakan.

  • Nilai Kembali

    Mengembalikan nilai bertipe BOOLEAN. Fungsi mengembalikan `True` jika tabel yang ditentukan ada. Sebaliknya, mengembalikan `False`.

  • Contoh

    -- Gunakan fungsi ini untuk daftar dalam pernyataan SELECT.
    select if(table_exists('abd'), col1, col2) from src;

TRANS_ARRAY

  • Batasan

    • Semua kolom yang digunakan sebagai key harus ditempatkan sebelum kolom yang akan ditranspos.

    • Hanya satu User-Defined Table Function (UDTF) yang diizinkan dalam pernyataan select. Kolom lain tidak diizinkan.

    • Fungsi ini tidak dapat digunakan dengan klausa group by, cluster by, distribute by, atau sort by.

  • Sintaksis

    trans_array (<num_keys>, <separator>, <key1>,<key2>,…,<col1>,<col2>,<col3>) as (<key1>,<key2>,...,<col1>, <col2>)
  • Deskripsi

    Menukar satu baris data menjadi beberapa baris. UDTF ini mentranspos kolom yang berisi array dipisahkan oleh delimeter tetap menjadi beberapa baris.

  • Parameter

    • num_keys: Konstanta wajib bertipe BIGINT. Nilainya harus lebih besar dari atau sama dengan 0. Parameter ini menentukan jumlah kolom yang akan digunakan sebagai key ketika Anda menukar satu baris menjadi beberapa baris.

    • separator: Konstanta wajib bertipe STRING yang digunakan untuk memisahkan string menjadi beberapa elemen. Kesalahan dikembalikan jika parameter ini adalah string kosong.

    • keys: Wajib. Kolom yang akan digunakan sebagai key untuk operasi transpos. Jumlah kunci ditentukan oleh num_keys. Jika num_keys menentukan bahwa semua kolom digunakan sebagai key (yaitu, num_keys sama dengan jumlah total kolom), hanya satu baris yang dikembalikan.

    • cols: Wajib. Parameter ini menentukan array yang ingin Anda transpos menjadi baris. Semua kolom yang mengikuti keys dianggap sebagai array yang akan ditranspos. Nilai parameter ini harus bertipe STRING untuk menyimpan array dalam format string, seperti Hangzhou;Beijing;Shanghai. Nilai dalam array ini dipisahkan oleh titik koma (;).

  • Nilai Kembali

    Mengembalikan baris yang telah ditranspos. Nama kolom baru ditentukan oleh as. Tipe data kolom yang digunakan sebagai key tetap tidak berubah. Jumlah baris yang ditranspos ditentukan oleh array dengan elemen paling banyak. Jika array lain memiliki lebih sedikit elemen, nilai yang hilang diisi dengan null.

  • Contoh

    • Contoh 1: Tabel t_table berisi data berikut.

      +----------+----------+------------+
      | login_id | login_ip | login_time |
      +----------+----------+------------+
      | wangwangA | 192.168.0.1,192.168.0.2 | 20120101010000,20120102010000 |
      | wangwangB | 192.168.45.10,192.168.67.22,192.168.6.3 | 20120111010000,20120112010000,20120223080000 |
      +----------+----------+------------+
      -- Jalankan pernyataan SQL.
      select trans_array(1, ",", login_id, login_ip, login_time) as (login_id,login_ip,login_time) from t_table;
      -- Hasil berikut dikembalikan.
      +----------+----------+------------+
      | login_id | login_ip | login_time |
      +----------+----------+------------+
      | wangwangB | 192.168.45.10 | 20120111010000 |
      | wangwangB | 192.168.67.22 | 20120112010000 |
      | wangwangB | 192.168.6.3 | 20120223080000 |
      | wangwangA | 192.168.0.1 | 20120101010000 |
      | wangwangA | 192.168.0.2 | 20120102010000 |
      +----------+----------+------------+
      
      -- Jika tabel berisi data berikut:
      Login_id LOGIN_IP LOGIN_TIME 
      wangwangA 192.168.0.1,192.168.0.2 20120101010000
      -- Nilai null ditambahkan untuk melengkapi array yang datanya tidak mencukupi. 
      Login_id Login_ip Login_time 
      wangwangA 192.168.0.1 20120101010000
      wangwangA 192.168.0.2 NULL
    • Contoh 2: Tabel mf_fun_array_test_t berisi data berikut.

      +------------+------------+------------+------------+
      | id         | name       | login_ip   | login_time |
      +------------+------------+------------+------------+
      | 1          | Tom        | 192.168.100.1,192.168.100.2 | 20211101010101,20211101010102 |
      | 2          | Jerry      | 192.168.100.3,192.168.100.4 | 20211101010103,20211101010104 |
      +------------+------------+------------+------------+
      
      -- Gunakan dua kunci, id dan name, untuk mentranspos array. Jalankan pernyataan SQL.
      select trans_array(2, ",", Id,Name, login_ip, login_time) as (Id,Name,login_ip,login_time) from mf_fun_array_test_t;
      -- Hasil berikut dikembalikan. Data dibagi dan dikelompokkan berdasarkan kunci id dan name.
      +------------+------------+------------+------------+
      | id         | name       | login_ip   | login_time |
      +------------+------------+------------+------------+
      | 1          | Tom        | 192.168.100.1 | 20211101010101 |
      | 1          | Tom        | 192.168.100.2 | 20211101010102 |
      | 2          | Jerry      | 192.168.100.3 | 20211101010103 |
      | 2          | Jerry      | 192.168.100.4 | 20211101010104 |
      +------------+------------+------------+------------+

TRANS_COLS

  • Batasan

    • Semua kolom yang digunakan sebagai key harus ditempatkan sebelum kolom yang akan ditranspos.

    • Hanya satu User-Defined Table Function (UDTF) yang diizinkan dalam pernyataan select. Kolom lain tidak diizinkan.

  • Sintaksis

    trans_cols (<num_keys>, <key1>,<key2>,…,<col1>, <col2>,<col3>) as (<idx>, <key1>,<key2>,…,<col1>, <col2>)
  • Deskripsi

    Mengubah satu baris data menjadi beberapa baris. UDTF ini mengubah kolom menjadi baris.

  • Parameter

    • num_keys: Konstanta wajib bertipe BIGINT. Nilainya harus lebih besar dari atau sama dengan 0. Parameter ini menentukan jumlah kolom yang akan digunakan sebagai key saat Anda mentranspos satu baris menjadi beberapa baris.

    • keys: Kolom wajib yang akan digunakan sebagai key untuk operasi transpose. Jumlah key ditentukan oleh num_keys. Jika num_keys menentukan bahwa semua kolom digunakan sebagai key (yaitu, num_keys sama dengan jumlah total kolom), hanya satu baris yang dikembalikan.

    • idx: Wajib. ID dari sebuah baris setelah ditranspos.

    • cols: Wajib. Kolom yang ingin Anda transpos menjadi baris.

  • Nilai Kembali

    Mengembalikan baris yang telah ditranspos. Nama kolom baru ditentukan oleh as. Kolom keluaran pertama adalah subskrip yang telah ditranspos, yang dimulai dari 1. Tipe data kolom yang digunakan sebagai kunci tetap tidak berubah, dan tipe data kolom lainnya juga tetap tidak berubah.

  • Contoh

    Tabel t_table berisi data berikut.

    +----------+----------+------------+
    | Login_id | Login_ip1 | Login_ip2 |
    +----------+----------+------------+
    | wangwangA | 192.168.0.1 | 192.168.0.2 |
    +----------+----------+------------+
    -- Jalankan pernyataan SQL.
    select trans_cols(1, login_id, login_ip1, login_ip2) as (idx, login_id, login_ip) from t_table;
    -- Hasil berikut dikembalikan.
    idx    login_id    login_ip
    1    wangwangA    192.168.0.1
    2    wangwangA    192.168.0.2

UNBASE64

  • Sintaksis

    binary unbase64(string <str>)
  • Deskripsi

    Mengonversi string yang dikodekan Base64 str menjadi nilai biner.

  • Parameter

    str: String wajib yang dikodekan Base64 bertipe STRING untuk dikonversi.

  • Nilai Kembali

    Mengembalikan nilai bertipe BINARY. Jika parameter masukan adalah null, fungsi ini mengembalikan null.

  • Contoh

    • Contoh 1: Konversi string YWxpYmFiYQ== menjadi nilai biner. Pernyataan sampel:

      -- Nilai kembali adalah alibaba.
      select unbase64('YWxpYmFiYQ==');
    • Contoh 2: Parameter masukan adalah null. Pernyataan sampel:

      -- Nilai kembali adalah null.
      select unbase64(null);

UNIQUE_ID

  • Sintaksis

    string unique_id()
  • Deskripsi

    Mengembalikan ID unik, seperti 29347a88-1e57-41ae-bb68-a9edbdd9****_1. Fungsi ini lebih efisien daripada fungsi UUID, dan ID yang dikembalikan lebih panjang. Dibandingkan dengan fungsi `UUID`, fungsi ini mengembalikan ID unik yang berisi akhiran, seperti _1, yang terdiri dari garis bawah (_) dan digit.

UUID

  • Sintaksis

    string uuid()
  • Deskripsi

    Mengembalikan ID acak, seperti 29347a88-1e57-41ae-bb68-a9edbdd9****.

    Catatan

    Nilai kembali adalah pengenal unik global (GUID) acak, yang unik dalam sebagian besar kasus.