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.
CatatanJika 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.
CatatanJika 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-02Kesalahan 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)ataudate_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: 2SELECT 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).
CatatanJika 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).
CatatanJika 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).
CatatanHologres 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).
CatatanHologres 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).
CatatanHologres 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).
CatatanTipe 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.