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;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.
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 mengeksekusiset 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 | 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 |