全部产品
Search
文档中心

Hologres:Fungsi yang kompatibel dengan Presto

更新时间:Jun 23, 2025

Mulai versi V3.1, Hologres mendukung berbagai fungsi yang kompatibel dengan Presto melalui ekstensi hg_presto_funcs. Topik ini menjelaskan cara menggunakan fungsi Presto di Hologres.

Instalasi ekstensi

Sebelum menggunakan fungsi Presto, Anda harus mengeksekusi pernyataan berikut sebagai Superuser untuk menginstal ekstensi yang diperlukan. Pernyataan ini hanya perlu dieksekusi sekali per database. Jika Anda membuat database baru, Anda harus mengeksekusi pernyataan tersebut kembali.

CREATE EXTENSION hg_presto_funcs;
null

Ekstensi ini hanya dapat dibuat dalam skema hg_presto_funcs. Anda tidak dapat secara manual menentukan skema lain.

Data sampel

CREATE TABLE public.presto_test(a INT, b INT[],c TEXT,d TEXT,e TEXT,f TEXT,g TEXT, h TEXT,i TEXT,j TEXT,k TEXT,l TEXT,m TEXT,n TEXT,o TEXT,p TEXT ,r TEXT ,s TEXT ,t FLOAT, u TEXT);

INSERT INTO public.presto_test
    VALUES (3, ARRAY[1, 2, 3, 2],'A','10010','SGVsbG8gV29ybGQh','\x00000001','\x0000000000000001','48656C6C6F','\x40490FD0','\x400921FB54442D18','\x48656C6C6F','"dwdw"','[1,2,3,4,5,6]','{"x": {"a": 1, "b": 2}}','café','apple,banana,cherry','ABCDA','running',3.1415926,'[1.0,2.0]');

Fungsi Presto

Tabel berikut mencantumkan fungsi Presto yang didukung. Untuk informasi lebih lanjut, lihat fungsi Presto.

null
  • Fungsi dalam topik ini tidak mendukung parameter input konstan. Data sampel untuk fungsi berikut berasal dari tabel sampel public.presto_test.

  • Saat menggunakan fungsi berikut, Anda perlu menambahkan awalan hg_presto_funcs. pada nama fungsi, atau mengeksekusi set search_path = hg_presto_funcs; untuk menentukan jalur. Contoh:

    set search_path = hg_presto_funcs;
    select array_cum_sum(b) from public.presto_test;

Fungsi

Deskripsi

Contoh

Hasil

array_cum_sum

Menghasilkan array di mana posisi ke-n adalah jumlah dari n posisi pertama dari array input. Hasilnya adalah null jika salah satu dari n posisi pertama berisi null.

select array_cum_sum(b) from public.presto_test;

{1,3,6,8}

array_has_duplicates

Memeriksa apakah ada elemen duplikat dalam array.

select array_has_duplicates(b) from public.presto_test;

t

array_join

Menggabungkan elemen-elemen array menjadi string menggunakan pemisah yang diberikan.

select array_join(b,';') from public.presto_test;

1;2;3;2

beta_cdf

Menghitung fungsi distribusi kumulatif (CDF) dari distribusi beta.

select beta_cdf(2,a,0.5) from public.presto_test;

0.6875

binomial_cdf

Menghitung CDF dari distribusi binomial.

select binomial_cdf(6,0.5,a) from public.presto_test;

0.65625

bit_count

Menghitung bobot Hamming (jumlah 1) dalam lebar bit tertentu setelah perhitungan biner.

select bit_count(a, 32) from public.presto_test;

2

bitwise_and

Melakukan perhitungan bitwise AND.

select bitwise_and(a, 2) from public.presto_test;

2

bitwise_arithmetic_shift_right

Melakukan pergeseran aritmatika kanan bitwise sebesar n bit.

select bitwise_arithmetic_shift_right(a,1) from public.presto_test;

1

bitwise_left_shift

Melakukan pergeseran kiri bitwise sebesar n bit.

select bitwise_left_shift(a,1) from public.presto_test;

6

bitwise_logical_shift_right

Melakukan pergeseran logika kanan bitwise sebesar n bit.

select bitwise_logical_shift_right(a,1,32) from public.presto_test;

1

bitwise_not

Melakukan perhitungan bitwise NOT.

select bitwise_not(a) from public.presto_test;

-4

bitwise_or

Melakukan perhitungan bitwise OR.

select bitwise_or(a, 2) from public.presto_test;

3

bitwise_right_shift

Melakukan pergeseran kanan bitwise sebesar n bit.

select bitwise_right_shift(a,1) from public.presto_test;

1

bitwise_right_shift_arithmetic

Melakukan pergeseran aritmatika kanan bitwise sebesar n bit.

select bitwise_right_shift_arithmetic(a,1) from public.presto_test;

1

bitwise_shift_left

Melakukan pergeseran kiri bitwise sebesar n bit.

select bitwise_shift_left(a,1,32) from public.presto_test;

6

bitwise_xor

Melakukan perhitungan bitwise XOR.

select bitwise_xor(a, 2) from public.presto_test;

1

cauchy_cdf

Menghitung CDF dari distribusi Cauchy.

select beta_cdf(2,a,0.5) from public.presto_test;

0.6875

chi_squared_cdf

Menghitung CDF dari distribusi chi-squared.

select chi_squared_cdf(a, 4) from public.presto_test;

0.7385358700508894

clamp

Memeriksa apakah nilai input berada dalam rentang yang ditentukan. Jika ya, nilai tersebut dikembalikan. Jika tidak, nilai terdekat dari rentang dikembalikan.

select clamp(a,2,9) from public.presto_test;

3

codepoint

Mengembalikan titik kode Unicode dari satu karakter.

select codepoint(c) from public.presto_test;

65

cosh

Menghitung kosinus hiperbolik dari nilai yang diberikan.

select cosh(a) from public.presto_test;

10.067661995777765

crc32

Menghitung nilai hash CRC32 dari data input.

select crc32(bin(a)::bytea) from public.presto_test;

3596227959

ends_with

Memeriksa apakah parameter pertama diakhiri dengan parameter kedua.

select ends_with(concat(a, 'hologres'), 'gres') from public.presto_test;

t

eq

Memeriksa apakah dua nilai sama.

select eq(c,'A') from public.presto_test;

t

f_cdf

Menghitung CDF dari distribusi F.

select f_cdf(2,a,0.5) from public.presto_test;

0.350480947161671

from_base

Menginterpretasikan string sebagai angka dalam basis yang diberikan dan mengembalikan nilai desimal.

select from_base(d,2) from public.presto_test;

18

from_base64

Mendekode string yang dikodekan Base64 ke bentuk biner aslinya.

select from_base64(e) from public.presto_test;

\x48656c6c6f20576f726c6421

from_base64url

Mendekode string yang dikodekan Base64 ke data biner menggunakan set karakter Base64 yang aman untuk URL.

select from_base64url(e) from public.presto_test;

\x48656c6c6f20576f726c6421

from_big_endian_32

Mendekode dua's complement 32-bit big-endian menjadi nilai bigint.

select from_big_endian_32(f::BYTEA) from public.presto_test;

1

from_big_endian_64

Mendekode dua's complement 64-bit big-endian menjadi nilai bigint.

select from_big_endian_64(g::BYTEA) from public.presto_test;

1

from_hex

Mendekode string yang dikodekan heksadesimal menjadi data biner mentah.

select from_hex(h) from public.presto_test;

\x48656c6c6f

from_ieee754_32

Mendekode data biner 32-bit big-endian menjadi bilangan floating-point presisi tunggal IEEE 754.

select from_ieee754_32(i::BYTEA) from public.presto_test;

3.14159012

from_ieee754_64

Mendekode data biner 64-bit big-endian menjadi bilangan floating-point presisi tunggal IEEE 754.

select from_ieee754_64(j::BYTEA) from public.presto_test;

3.141592653589793

gamma_cdf

Menghitung CDF dari distribusi gamma.

select gamma_cdf(2,a,0.5) from public.presto_test;

0.012437987627616913

gt

Mengembalikan true jika x > y dan false jika sebaliknya, untuk perbandingan string.

select gt('B' ,c) from public.presto_test;

t

gte

Mengembalikan true jika x ≥ y dan false jika sebaliknya, untuk perbandingan string.

select gte('A' ,c) from public.presto_test;

t

hamming_distance

Mengembalikan jumlah posisi di mana karakter berbeda.

select hamming_distance(e,'SGVsBG7gV39ybGQh') from public.presto_test;

3

hmac_md5

Menghitung kode autentikasi pesan berbasis hash menggunakan algoritma MD5 dan kunci yang diberikan untuk input biner.

select hmac_md5(k::BYTEA,'secret_key') from public.presto_test;

\x52460d22ec7e402dc8c62aeda51ec920

hmac_sha1

Menghitung kode autentikasi pesan berbasis hash menggunakan algoritma SHA1 dan kunci yang diberikan untuk input biner.

select hmac_sha1(k::BYTEA,'secret_key') from public.presto_test;

\xf8b6b3ee753fe1d8052cf317b0b4606089c85b19

hmac_sha256

Menghitung kode autentikasi pesan berbasis hash menggunakan algoritma SHA256 dan kunci yang diberikan untuk input biner.

select hmac_sha256(k::BYTEA,'secret_key') from public.presto_test;

\x0f0d2e10ec2bdf21bbdf490fd103820089879277261e9aa53ce3f8ecfd46b687

hmac_sha512

Menghitung kode autentikasi pesan berbasis hash menggunakan algoritma SHA512 dan kunci yang diberikan untuk input biner.

select hmac_sha512(k::BYTEA,'secret_key') from public.presto_test;

\x99376d305f3c2e729e60eb1e096fc364b8564452c4089b509c5d0d6e63608a43f14643a82880f156bf7df5ce32ba6bc35e36980772f9199b1cf43793e9bbd545

inverse_beta_cdf

Menghitung inverse CDF dari distribusi beta.

select inverse_beta_cdf(2,a,0.6875) from public.presto_test;

0.5

inverse_cauchy_cdf

Menghitung inverse CDF dari distribusi Cauchy.

select inverse_cauchy_cdf(2,a,0.5) from public.presto_test;

2

inverse_laplace_cdf

Menghitung inverse CDF dari distribusi Laplace.

select inverse_laplace_cdf(a,1,0.5) from public.presto_test;

3

inverse_normal_cdf

Menghitung inverse CDF dari distribusi normal dengan mean dan standar deviasi tertentu.

select inverse_normal_cdf(a,1,0.5) from public.presto_test;

3

inverse_weibull_cdf

Menghitung inverse CDF dari distribusi Weibull.

select inverse_weibull_cdf(2,a,0.5) from public.presto_test;

2.497663833473093

is_finite

Memeriksa apakah suatu nilai adalah terbatas.

select is_finite(a) from public.presto_test;

t

is_infinite

Memeriksa apakah suatu nilai adalah tak terbatas.

select is_infinite(a) from public.presto_test;

f

is_json_scalar

Memeriksa apakah suatu nilai adalah nilai skalar JSON. Nilai input harus merupakan nilai skalar JSON.

select is_json_scalar(l) from public.presto_test;

t

is_nan

Memeriksa apakah nilai numerik adalah Not a Number (NaN).

select is_nan(a) from public.presto_test;

f

json_array_contains

Memeriksa apakah suatu nilai ada dalam array JSON.

select json_array_contains(u,2) from public.presto_test;

t

json_extract_scalar

Mengembalikan nilai pada jalur yang ditentukan dari string JSON. Nilai input harus merupakan nilai skalar JSON.

select json_extract_scalar(m,'$[1]') from public.presto_test;

2

json_size

Menghitung ukuran nilai JSON. Nilai input harus merupakan nilai skalar JSON.

select json_size(n,'$.x') from public.presto_test;

2

laplace_cdf

Menghitung CDF dari distribusi Laplace.

select laplace_cdf(0,1,a) from public.presto_test;

0.9751064658160681

levenshtein_distance

Mengembalikan jarak Levenshtein (edit distance, jumlah minimum operasi edit karakter tunggal yang diperlukan untuk mengubah satu string menjadi string lainnya) antara dua string.

select levenshtein(a::text, 'hologres') from public.presto_test;

8

log10

Menghitung logaritma basis-10 dari nilai yang diberikan.

select log10(a) from public.presto_test;

0.47712125471966244

log2

Menghitung logaritma basis-2 dari nilai yang diberikan.

select log2(a) from public.presto_test;

1.584962500721156

lt

Memeriksa apakah nilai pertama lebih kecil dari nilai kedua.

select lt('ABCDA',c) from public.presto_test;

f

lte

Memeriksa apakah nilai pertama lebih kecil atau sama dengan nilai kedua.

select lte('A',c) from public.presto_test;

t

minus

Menghitung selisih antara dua angka.

select minus(a,1) from public.presto_test;

2

negate

Mengembalikan bilangan negatif dari nilai yang diberikan.

select negate(a) from public.presto_test;

-3

neq

Memeriksa apakah dua nilai sama.

select neq('A',c) from public.presto_test;

f

normal_cdf

Menghitung CDF dari distribusi normal dengan mean dan standar deviasi tertentu.

select normal_cdf(0,1,a) from public.presto_test;

0.9986501019683699

normalize

Mengonversi string ke bentuk normalisasi NFC.

select normalize(o) from public.presto_test;

café

poisson_cdf

Menghitung CDF dari distribusi Poisson.

select poisson_cdf(1,a) from public.presto_test;

0.9810118431238462

regexp_split

Memisahkan string menggunakan ekspresi reguler.

select regexp_split(p,',') from public.presto_test;

{"apple","banana","cherry"}

remove_nulls

Menghapus nilai NULL dari array.

select remove_nulls(b) from public.presto_test;

{1,2,3,2}

secure_rand

Mengembalikan bilangan floating-point presisi ganda yang aman secara kriptografis.

select secure_rand() from public.presto_test;

0.22077085443234523

secure_random

Mengembalikan bilangan floating-point presisi ganda yang aman secara kriptografis.

select secure_random() from public.presto_test;

0.3414298654539425

sha1

Menghitung nilai hash SHA-1 dari string dan mengonversi hasilnya menjadi string heksadesimal.

select sha1(a::text::bytea) from public.spark_test;

77de68daecd823babbb58edb1c8e14d7106e83bb

spooky_hash_v2_32

Menghitung nilai hash SpookyHashV2 32-bit dari data biner input.

select spooky_hash_v2_32(r::BYTEA) from public.presto_test;

\x4a6ed4f7

spooky_hash_v2_64

Menghitung nilai hash SpookyHashV2 64-bit dari data biner input.

select spooky_hash_v2_64(r::BYTEA) from public.presto_test;

\x2d89595e4a6ed4f7

strrpos

Mengembalikan posisi kemunculan terakhir substring dalam string.

select STRRPOS(r,'A') from public.presto_test;

5

tanh

Menghitung tangen hiperbolik.

select tanh(a) from public.presto_test;

0.9950547536867305

to_base

Mengonversi integer ke representasi string dalam basis yang ditentukan.

select to_base(a, 2) from public.presto_test;

11

to_base64

Mengkodekan data biner ke dalam string format Base64.

select to_base64(r::BYTEA) from public.presto_test;

QUJDREE=

to_base64url

Mengkodekan data biner ke dalam string format Base64 menggunakan set karakter yang aman untuk URL.

select to_base64url(r::BYTEA) from public.presto_test;

QUJDREE=

to_big_endian_32

Mengkodekan integer sebagai dua's complement 32-bit dan menyimpannya sebagai data biner dalam urutan big-endian.

select to_big_endian_32(a) from public.presto_test;

\x00000003

to_big_endian_64

Mengkodekan integer sebagai dua's complement 64-bit dan menyimpannya sebagai data biner dalam urutan big-endian.

select to_big_endian_64(a) from public.presto_test;

\x0000000000000003

to_ieee754_32

Mengkodekan bilangan floating-point presisi tunggal ke dalam data biner format standar IEEE 754 32-bit, dan menyimpannya sebagai tipe biner 4-byte dalam urutan big-endian.

select to_ieee754_32(a::REAL) from public.presto_test;

\x40400000

to_ieee754_64

Mengkodekan bilangan floating-point presisi ganda ke dalam data biner format standar IEEE 754 64-bit, dan menyimpannya sebagai tipe biner 8-byte dalam urutan big-endian.

select to_ieee754_64(a::FLOAT ) from public.presto_test;

\x4008000000000000

trim

Menghapus set karakter.

select trim(r,'A') from public.presto_test;

BCD

trim_array

Menghapus n elemen dari akhir array.

select trim_array(b,2) from public.presto_test;

{1,2}

truncate

Memotong x ke n tempat desimal.

select truncate(t,2) from public.presto_test;

3.14

url_decode

Menghilangkan nilai-nilai yang di-escape dari URL.

select url_decode(url_encode(concat('www.','中文',a,'.com'))) from public.presto_test;

www.中文3.com

url_encode

Meng-escape nilai dengan mengenkodenya.

select url_encode(concat('www.','中文',a,'.com')) from public.presto_test;

www.%E4%B8%AD%E6%96%873.com

url_extract_fragment

Mengekstrak pengenal fragmen dari URL.

select url_extract_fragment(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

discount-section

url_extract_host

Mengekstrak nama domain dari URL.

select url_extract_host(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

www.example.com

url_extract_parameter

Mengekstrak nilai parameter pertama bernama 'name' dari string query di URL.

select url_extract_parameter(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section'),'color') from public.presto_test;

red

url_extract_path

Mengekstrak jalur dari URL.

select url_extract_path(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

/products/shirt

url_extract_port

Mengekstrak nomor port dari URL.

select url_extract_port(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

3088

url_extract_protocol

Mengekstrak protokol dari URL.

select url_extract_protocol(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

https

url_extract_query

Mengekstrak parameter query dari URL.

select url_extract_query(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) from public.presto_test;

color=red&size=XL

weibull_cdf

Menghitung CDF dari distribusi Weibull.

select weibull_cdf(2,a,1.5) from public.presto_test;

0.22119921692859512

wilson_interval_lower

Mengembalikan batas bawah interval kepercayaan Wilson untuk proses uji Bernoulli pada tingkat kepercayaan z.

select wilson_interval_lower(a,20,1.96) from public.presto_test;

0.05236779195949585

wilson_interval_upper

Mengembalikan batas atas interval kepercayaan Wilson untuk proses uji Bernoulli pada tingkat kepercayaan z.

select wilson_interval_upper(a,20,1.96) from public.presto_test;

0.3604232958869574

word_stem

Mengembalikan bentuk dasar kata dalam bahasa yang ditentukan, di mana 'en' adalah untuk bahasa Inggris dan 'zn' adalah untuk bahasa Tionghoa.

select word_stem(s, 'en') from public.presto_test;

run

xxhash64

Menghitung nilai hash XXHash64 dari data biner input dan mengembalikan hasil biner 64-bit.

select xxhash64(r::BYTEA) from public.presto_test;

\x616f621d4581935f