全部产品
Search
文档中心

Hologres:Fungsi yang kompatibel dengan ClickHouse

更新时间:Nov 10, 2025

Hologres mendukung beberapa fungsi ClickHouse serta fungsi lain dengan semantik serupa. Topik ini menjelaskan fungsi ClickHouse yang didukung, cara penggunaannya, dan metode menulis ulang fungsi umum menggunakan fungsi dengan semantik yang setara.

Fungsi string

Sintaks fungsi string ClickHouse yang umum, seperti length, lower, upper, concat, substring, dan trim, sebagian besar serupa di Hologres. Untuk informasi lebih lanjut, lihat Fungsi string.

Fungsi matematika

Sintaks untuk fungsi matematika ClickHouse yang umum, seperti cbrt, degrees, exp, ln, log, pi, radians, sign, dan sqrt, sebagian besar serupa di Hologres. Untuk informasi lebih lanjut, lihat Fungsi matematika.

Fungsi konversi tipe

Hologres V1.3.36 dan versi lebih baru mendukung fungsi konversi tipe ClickHouse berikut. Fungsi-fungsi ini tidak mendukung konstanta sebagai parameter input. Untuk skenario konversi tipe data lainnya, Anda dapat menggunakan sintaks CAST(col AS type) atau col::type.

Pernyataan berikut membuat tabel dan menyisipkan data. Kasus penggunaan fungsi di bagian ini memerlukan tabel ini.

CREATE TABLE public.tb1 (
 id bigint NOT NULL,
 id_text text,
 data_date text,
 data_float text,
 data_text text
);
INSERT INTO public.tb1 VALUES (1234,'123','20190102','1.23','hologres');

toString(anyelement)

  • Deskripsi: Mengonversi semua tipe data ke tipe teks.

  • Tipe kembali: teks.

  • Kasus penggunaan:

    SELECT toString(id) from public.tb1;
    
    -- Hasil:
    1234

toInt64(anyelement)

  • Deskripsi: Mengonversi tipe numerik lainnya ke tipe bigint.

    Catatan

    Jika Anda menggunakan fungsi ini untuk mengonversi tipe non-numerik, kesalahan akan dilaporkan karena ketidakcocokan tipe data.

  • Tipe kembali: bigint.

  • Kasus penggunaan:

    SELECT toInt64(id_text) from public.tb1;
    
    -- Hasil:
    1234

toInt32(anyelement)

  • Deskripsi: Mengonversi tipe numerik lainnya ke tipe int.

    Catatan

    Jika Anda menggunakan fungsi ini untuk mengonversi tipe non-numerik, kesalahan akan dilaporkan karena ketidakcocokan tipe data.

  • Tipe kembali: int.

  • Kasus penggunaan:

    SELECT toInt32(id_text) from public.tb1;
    
    -- Hasil:
    123

toDate(text)

  • Deskripsi: Mengonversi tipe teks ke tipe tanggal.

  • Tipe kembali: tanggal.

  • Kasus penggunaan:

    • Konversi berhasil.

      SELECT toDate(data_date) from public.tb1;
      
      -- Hasil:
      2019-01-02

    • Kesalahan dilaporkan karena ketidakcocokan tipe data.

      SELECT toDate(data_text) from public.tb1;
      
      -- Hasil:
      ERROR: *** sintaks masukan tidak valid untuk tipe tanggal ***

toFloat64(anyelement)

  • Deskripsi: Mengonversi tipe numerik lainnya ke tipe presisi ganda.

  • Tipe kembali: presisi ganda.

  • Kasus penggunaan:

    SELECT toFloat64(data_float) from public.tb1;
    
    -- Hasil:
    1.23

Fungsi waktu dan tanggal

Untuk informasi lebih lanjut tentang fungsi waktu dan tanggal di Hologres serta cara menggunakannya, lihat Fungsi konversi waktu dan tanggal.

toYear, toMonth, toQuarter, dan lainnya

  • Deskripsi: Mengekstraksi subbidang seperti tahun, bulan, atau kuartal dari timestamp.

  • Implementasi Hologres: Hologres V4.0 dan versi lebih baru mendukung langsung fungsi ClickHouse dengan nama yang sama. Untuk versi sebelum V4.0, gunakan extract(bidang from timestamp) atau date_part(teks, timestamp). Untuk detail lebih lanjut, lihat Fungsi pemotongan datetime.

  • Kasus penggunaan:

    • SELECT extract(month FROM timestamp '2001-02-16 20:38:40');
      
      -- Hasil:
      2
    • SELECT extract(quarter FROM timestamp '2001-02-16 20:38:40');
      
      -- Hasil:
      1

addDays, addMonths, addYears, dan lainnya

  • Deskripsi: Menambahkan interval waktu ke timestamp.

  • Implementasi Hologres: Operator +.

  • Kasus penggunaan:

    SELECT date '2001-09-28' + interval '1 hour';
    
    -- Hasil:
    2001-09-28 01:00:00

subtractDays, subtractMonths, subtractYears, dan lainnya

  • Deskripsi: Mengurangi interval waktu dari timestamp.

  • Implementasi Hologres: Operator -.

  • Kasus penggunaan:

    SELECT date '2001-09-28' - interval '1 day';
    
    -- Hasil:
    2001-09-27 00:00:00

Fungsi agregat

Untuk informasi lebih lanjut tentang fungsi agregat di Hologres dan penggunaannya, lihat Fungsi agregat tujuan umum, APPROX_COUNT_DISTINCT, UNIQ, dan MAX_BY dan MIN_BY.

argMin(x, y)

  • Deskripsi: Menghitung nilai di kolom x yang sesuai dengan nilai minimum di kolom y.

  • Implementasi Hologres: min_by(x, y).

    Catatan
    • Jika nilai minimum di kolom y sesuai dengan beberapa nilai berbeda di kolom x, fungsi mengembalikan minimum dari nilai-nilai x tersebut.

    • Didukung di Hologres V1.3.36 dan versi lebih baru.

  • Kasus penggunaan: Untuk pernyataan CREATE TABLE untuk tabel test, lihat Contoh.

    SELECT min_by(name, cost) FROM test;
    
    -- Hasil:
     min_by
    --------
     cc
    (1 baris)

argMax(x, y)

  • Deskripsi: Menghitung nilai di kolom x yang sesuai dengan nilai maksimum di kolom y.

  • Implementasi Hologres: max_by(x, y).

    Catatan
    • Jika nilai maksimum di kolom y sesuai dengan beberapa nilai berbeda di kolom x, fungsi mengembalikan maksimum dari nilai-nilai x tersebut.

    • Didukung di Hologres V1.3.36 dan versi lebih baru.

  • Kasus penggunaan: Untuk pernyataan CREATE TABLE untuk tabel test, lihat Contoh.

    SELECT id, max_by(name, cost) FROM test GROUP BY id;
    
    -- Hasil:
     id | max_by
    ----+--------
      2 | bb
      1 | aaa
      3 | c
    (3 baris)

groupArray(anyelement)

  • Deskripsi: Menggabungkan nilai ekspresi menjadi array.

  • Implementasi Hologres: array_agg(anyelement).

  • Kasus penggunaan:

    CREATE TABLE test_array_agg_int (c1 int);
    INSERT INTO test_array_agg_int VALUES (1), (2);
    
    SELECT array_agg (c1) FROM test_array_agg_int;
    
    -- Hasil:
     array_agg 
    -----------
     {1,2}
    (1 baris)

Fungsi array

Untuk informasi lebih lanjut tentang fungsi array di Hologres dan penggunaannya, lihat Fungsi array.

arrayJoin(anyarray)

  • Deskripsi: Memperluas setiap elemen array menjadi baris terpisah.

  • Implementasi Hologres: unnest(anyarray).

  • Kasus penggunaan:

    SELECT unnest(ARRAY[1,2]);
    
    -- Hasil:
    1
    2

arrayConcat(anyarray, anyarray...)

  • Deskripsi: Menggabungkan beberapa array.

  • Implementasi Hologres: array_cat(anyarray, anyarray). Fungsi ini menggabungkan dua array.

  • Kasus penggunaan:

    SELECT array_cat(array_cat(ARRAY[1,2], ARRAY[3,4]), ARRAY[5,6]);
    
    -- Hasil:
    {1,2,3,4,5,6}

arrayDistinct(anyarray)

  • Deskripsi: Mengembalikan array baru yang berisi elemen-elemen unik dari array input.

  • Implementasi Hologres: array_distinct(anyarray).

    Catatan

    Hologres V1.3.19 dan versi lebih baru mendukung fungsi array_distinct. Fungsi ini tidak mendukung konstanta sebagai parameter input.

  • Kasus penggunaan:

    CREATE TABLE test_array_distinct_text ( c1 text[]);
    INSERT INTO test_array_distinct_text
        VALUES (ARRAY['holo', 'hello', 'holo', 'SQL', 'SQL']), (ARRAY[]::text[]);
    
    SELECT c1, array_distinct (c1) FROM test_array_distinct_text;
    
    -- Hasil:
                c1             |  array_distinct
    ---------------------------+------------------
     {holo,hello,holo,SQL,SQL} | {SQL,hello,holo}
     {}                        | {NULL}
    (2 baris)

arrayMin(anyarray)

  • Deskripsi: Mengembalikan nilai minimum dari elemen-elemen array.

  • Implementasi Hologres: array_min(anyarray).

    Catatan

    Hologres V1.3.19 dan versi lebih baru mendukung fungsi array_min. Fungsi ini tidak mendukung konstanta sebagai parameter input.

  • Kasus penggunaan:

    CREATE TABLE test_array_min_text ( c1 text[]);
    INSERT INTO test_array_min_text
        VALUES (NULL), (ARRAY['hello', 'holo', 'blackhole', 'array']);
    
    SELECT c1, array_min (c1) FROM test_array_min_text;
    
    -- Hasil:
                  c1              | array_min
    ------------------------------+-----------
                                  |
     {hello,holo,blackhole,array} | array
    (2 baris)

arrayMax(anyarray)

  • Deskripsi: Mengembalikan nilai maksimum dari elemen-elemen array.

  • Implementasi Hologres: array_max(anyarray).

    Catatan

    Hologres V1.3.19 dan versi lebih baru mendukung fungsi array_max. Fungsi ini tidak mendukung konstanta sebagai parameter input.

  • Kasus penggunaan:

    CREATE TABLE test_array_max_int ( c1 int[]);
    INSERT INTO test_array_max_int VALUES (NULL), (ARRAY[-2, NULL, -3, -12, -7]);
    
    SELECT c1, array_max (c1)FROM test_array_max_int;
    
    -- Hasil:
            c1        | array_max
    ------------------+-----------
                      |
     {-2,0,-3,-12,-7} |         0
    (2 baris)

arraySum(anyarray)

  • Deskripsi: Mengembalikan jumlah elemen-elemen array.

  • Implementasi di Hologres:

    • Fungsi unnest

    • Fungsi func

    • Sum.

  • Kasus penggunaan:

    SELECT sum(ele) FROM (SELECT unnest(ARRAY[1,2,4]) AS ele) a;
    
    -- Mengembalikan:
    7

Fungsi bitmap

Untuk informasi lebih lanjut tentang fungsi Roaring Bitmap di Hologres dan penggunaannya, lihat Fungsi Roaring Bitmap.

bitmapToArray(roaringbitmap)

  • Mengembalikan array integer yang sesuai dengan bitmap.

  • Implementasi Hologres: rb_to_array(roaringbitmap).

  • Kasus penggunaan:

    SELECT rb_to_array(rb_build('{1,2,3}'));
    
    -- Hasil:
    {1,2,3}

groupBitmapState(integer)

  • Mengagregasi nilai-nilai ekspresi menjadi bitmap.

  • Implementasi Hologres: rb_build_agg(integer).

  • Kasus penggunaan:

    SELECT rb_build_agg(1);
    
    -- Hasil:
    \x3a3000000100000000000000100000000100

groupBitmap(integer)

  • Menghitung kardinalitas bitmap yang diagregasi dari nilai-nilai ekspresi.

  • Implementasi Hologres: Pertama, gunakan fungsi rb_build_agg untuk mengagregasi nilai-nilai ekspresi menjadi bitmap. Kemudian, gunakan fungsi rb_cardinality untuk menghitung kardinalitas: rb_cardinality(rb_build_agg(integer)).

  • Kasus penggunaan:

    SELECT rb_cardinality(rb_build_agg(1));
    
    -- Hasil:
    1

groupBitmapAndState(roaringbitmap)

  • Melakukan agregasi AND pada bitmap.

  • Implementasi Hologres: rb_and_agg(roaringbitmap).

  • Kasus penggunaan:

    SELECT rb_and_agg(rb_build('{1,2,3}'));
    
    -- Hasil:
    \x3a300000010000000000020010000000010002000300

groupBitmapOrState(roaringbitmap)

  • Melakukan agregasi OR pada bitmap.

  • Implementasi Hologres: rb_or_agg(roaringbitmap).

  • Kasus penggunaan:

    SELECT rb_or_agg(rb_build('{1,2,3}'));
    
    -- Hasil:
    \x3a300000010000000000020010000000010002000300

groupBitmapAnd(roaringbitmap)

  • Melakukan agregasi AND pada bitmap dan mengembalikan kardinalitas.

  • Implementasi Hologres: rb_and_cardinality_agg(roaringbitmap).

  • Kasus penggunaan:

    SELECT rb_and_cardinality_agg(rb_build('{1,2,3}'));
    
    -- Hasil:
    3

groupBitmapOr(roaringbitmap)

  • Melakukan agregasi OR pada bitmap dan mengembalikan kardinalitas.

  • Implementasi Hologres: rb_or_cardinality_agg(roaringbitmap).

  • Kasus penggunaan:

    SELECT rb_or_cardinality_agg(rb_build('{1,2,3}'));
    
    -- Hasil:
    3

Fungsi hash

sipHash64(text)

  • Deskripsi: Mengembalikan nilai SipHash 64-bit untuk teks. Tipe kembali adalah UInt64.

  • Implementasi Hologres: hg_sip_hash_64(text).

    Catatan
    • Tipe kembali adalah BIGINT.

    • Hologres V2.0.1 dan versi lebih baru mendukung fungsi sipHash64.

    • Fungsi ini tidak mendukung konstanta sebagai parameter input.

  • Kasus penggunaan:

    CREATE TABLE test_hg_sip_hash_64_text (c1 text);
    INSERT INTO test_hg_sip_hash_64_text VALUES ('abc');
    
    SELECT hg_sip_hash_64 (c1) FROM test_hg_sip_hash_64_text;
    
    -- Hasil:
    4596069200710135518

Fungsi lainnya

PostgreSQL kompatibel dengan berbagai fungsi, termasuk fungsi string dan matematika. Selain itu, PostgreSQL juga menyediakan banyak fungsi lain yang menggunakan sintaks serupa dengan ClickHouse. Untuk informasi lebih lanjut mengenai fungsi dan penggunaannya, lihat PostgreSQL.