すべてのプロダクト
Search
ドキュメントセンター

Hologres:Presto 互換関数

最終更新日:Jun 06, 2025

V3.1 以降、Hologres は hg_presto_funcs 拡張機能を通じて様々な Presto 互換関数をサポートしています。このトピックでは、Hologres で Presto 関数を使用する方法について説明します。

拡張機能のインストール

Presto 関数を使用する前に、必要な拡張機能をインストールするために、スーパーユーザーとしてデータベースで次の文を実行する必要があります。この文は、データベースごとに一度だけ実行する必要があります。新しいデータベースを作成する場合は、この文を再度実行する必要があります。

CREATE EXTENSION hg_presto_funcs;
説明

この拡張機能は、hg_presto_funcs スキーマでのみ作成できます。別のスキーマを手動で指定することはできません。

サンプルデータ

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]');

Presto 関数

次の表に、サポートされている Presto 関数を示します。詳細については、「Presto 関数」をご参照ください。

重要
  • このトピックの関数は、定数入力パラメーターをサポートしていません。以下の関数のサンプルデータは、サンプルテーブル public.presto_test から取得されます。

  • 以下の関数を使用する場合は、関数名の前に hg_presto_funcs. というプレフィックスを追加するか、例の文で set search_path = hg_presto_funcs; を実行してパスを指定する必要があります。例:

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

関数

説明

結果

array_cum_sum

入力配列の最初の n 個の位置の合計が n 番目の位置になる配列を出力します。最初の n 個の位置のいずれかに null が含まれている場合、結果は null になります。

select array_cum_sum(b) from public.presto_test;

{1,3,6,8}

array_has_duplicates

配列内に重複する要素があるかどうかを確認します。

select array_has_duplicates(b) from public.presto_test;

t

array_join

指定された区切り文字を使用して、配列要素を文字列に結合します。

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

1;2;3;2

beta_cdf

ベータ分布の累積分布関数 (CDF) を計算します。

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

0.6875

binomial_cdf

二項分布の CDF を計算します。

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

0.65625

bit_count

バイナリ計算後、指定されたビット幅内のハミング重み(1 の数)を計算します。

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

2

bitwise_and

ビット単位の AND 計算を実行します。

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

2

bitwise_arithmetic_shift_right

n ビットのビット単位の算術右シフトを実行します。

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

1

bitwise_left_shift

n ビットのビット単位左シフトを実行します。

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

6

bitwise_logical_shift_right

n ビットのビット単位論理右シフトを実行します。

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

1

bitwise_not

ビット単位の NOT 演算を実行します。

select bitwise_not(a) from public.presto_test;

-4

bitwise_or

ビット単位の OR 演算を実行します。

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

3

ビット単位右シフト

n ビットのビット単位の右シフトを実行します。

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

1

bitwise_right_shift_arithmetic

n ビットのビット単位の算術右シフトを実行します。

public.presto_test から bitwise_right_shift_arithmetic(a, 1) を選択します。

1

bitwise_shift_left

n ビットのビット単位左シフトを実行します。

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

6

ビット単位 XOR

ビット単位の XOR 計算を実行します。

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

1

cauchy_cdf

コーシー分布の CDF を計算します。

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

0.6875

chi_squared_cdf

カイ二乗分布の CDF を計算します。

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

0.7385358700508894

clamp

入力値が指定された範囲内にあるかどうかを確認します。範囲内にある場合は、その値が返されます。そうでない場合は、最も近い範囲値が返されます。

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

3

コードポイント

1 文字の Unicode コードポイントを返します。

select codepoint(c) from public.presto_test;

65

cosh

指定された値の双曲線余弦を計算します。

select cosh(a) from public.presto_test;

10.067661995777765

crc32

入力データの CRC32 ハッシュ値を計算します。

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

3596227959

ends_with

最初のパラメーターが 2 番目のパラメーターで終わるかどうかを確認します。

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

t

eq

2 つの値が等しいかどうかを確認します。

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

t

f_cdf

F 分布の CDF を計算します。

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

0.350480947161671

from_base

文字列を指定された基数の数値として解釈し、10 進値を返します。

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

18

from_base64

Base64 でエンコードされた文字列を元のバイナリ形式にデコードします。

select from_base64(e) from public.presto_test;

\x48656c6c6f20576f726c6421

from_base64url

URL セーフ Base64 文字セットを使用して、Base64 エンコードされた文字列をバイナリデータにデコードします。

select from_base64url(e) from public.presto_test;

\x48656c6c6f20576f726c6421

from_big_endian_32

32 ビットのビッグエンディアンの 2 の補数を bigint 値にデコードします。

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

1

from_big_endian_64

64 ビットのビッグエンディアンの 2 の補数を bigint 値にデコードします。

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

1

from_hex

16 進数でエンコードされた文字列を生のバイナリデータにデコードします。

select from_hex(h) from public.presto_test;

\x48656c6c6f

from_ieee754_32

32 ビットのビッグエンディアン バイナリ データを IEEE 754 単精度浮動小数点数にデコードします。

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

3.14159012

from_ieee754_64

64 ビットのビッグエンディアン バイナリ データを IEEE 754 単精度浮動小数点数にデコードします。

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

3.141592653589793

gamma_cdf

ガンマ分布の CDF を計算します。

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

0.012437987627616913

gt

文字列比較の場合、x > y の場合は true を返し、それ以外の場合は false を返します。

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

t

gte

文字列比較の場合、x ≥ y の場合は true を返し、それ以外の場合は false を返します。

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

t

hamming_distance

文字が異なる位置の数を返します。

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

3

hmac_md5

入力バイナリに対して、MD5 アルゴリズムと指定されたキーを使用して、ハッシュベースのメッセージ認証コードを計算します。

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

\x52460d22ec7e402dc8c62aeda51ec920

hmac_sha1

入力バイナリに対して、SHA1 アルゴリズムと指定されたキーを使用して、ハッシュベースのメッセージ認証コードを計算します。

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

\xf8b6b3ee753fe1d8052cf317b0b4606089c85b19

hmac_sha256

入力バイナリに対して、SHA256 アルゴリズムと指定されたキーを使用して、ハッシュベースのメッセージ認証コードを計算します。

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

\x0f0d2e10ec2bdf21bbdf490fd103820089879277261e9aa53ce3f8ecfd46b687

hmac_sha512

入力バイナリに対して、SHA512 アルゴリズムと指定されたキーを使用して、ハッシュベースのメッセージ認証コードを計算します。

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

\x99376d305f3c2e729e60eb1e096fc364b8564452c4089b509c5d0d6e63608a43f14643a82880f156bf7df5ce32ba6bc35e36980772f9199b1cf43793e9bbd545

inverse_beta_cdf

ベータ分布の逆累積分布関数(CDF)を計算します。

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

0.5

inverse_cauchy_cdf

コーシー分布の逆累積分布関数(CDF)を計算します。

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

2

inverse_laplace_cdf

ラプラス分布の逆累積分布関数(CDF)を計算します。

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

3

inverse_normal_cdf

指定された平均と標準偏差を持つ正規分布の逆累積分布関数(CDF)を計算します。

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

3

inverse_weibull_cdf

ワイブル分布の逆累積分布関数(CDF)を計算します。

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

2.497663833473093

is_finite

値が有限かどうかを確認します。

select is_finite(a) from public.presto_test;

t

is_infinite

値が無限かどうかを確認します。

select is_infinite(a) from public.presto_test;

f

is_json_scalar

値が JSON スカラー値であるかどうかを確認します。入力値は JSON スカラー値である必要があります。

public.presto_test から is_json_scalar(l) を選択します。

t

is_nan

数値が非数 (NaN) であるかどうかを確認します。

select is_nan(a) from public.presto_test;

f

json_array_contains

JSON 配列に値が含まれているかどうかを確認します。

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

t

json_extract_scalar

JSON 文字列から指定されたパスにある値を返します。入力値は JSON スカラー値である必要があります。

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

2

json_size

JSON 値のサイズを計算します。入力値は JSON スカラー値である必要があります。

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

2

ラプラス累積分布関数

ラプラス分布の CDF を計算します。

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

0.9751064658160681

レーベンシュタイン距離

2 つの文字列間のレーベンシュタイン距離(編集距離、ある文字列を別の文字列に変換するために必要な 1 文字の編集操作の最小数)を返します。

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

8

log10

指定された値の10を底とする対数を計算します。

select log10(a) from public.presto_test;

0.47712125471966244

log2

指定された値の底が 2 の対数を計算します。

select log2(a) from public.presto_test;

1.584962500721156

lt

最初の値が 2 番目の値より小さいかどうかを確認します。

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

f

LTE

最初の値が2番目の値以下の場合、チェックします。

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

t

マイナス

2 つの数値の差を計算します。

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

2

否定する

指定された値の反対数を返します。

select negate(a) from public.presto_test;

-3

等しくない

2 つの値が等しいかどうかを確認します。

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

f

正規累積分布関数

指定された平均と標準偏差で正規分布の累積分布関数(CDF)を計算します。

public.presto_test から normal_cdf(0, 1, a) を選択します。

0.9986501019683699

正規化

文字列を NFC 正規化形式に変換します。

public.presto_test から normalize(o) を選択します。

カフェ

ポアソン累積分布関数

ポアソン分布の CDF を計算します。

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

0.9810118431238462

regexp_split

正規表現を使用して文字列を分割します。

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

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

null 値を削除

配列から NULL 値を削除します。

public.presto_test から remove_nulls(b) を選択します。

{1,2,3,2}

secure_rand

WordPress のインストールが完了したら、ログインして、新しいウェブサイトの作成を開始できます。

public.presto_test から secure_rand() を選択します。

0.22077085443234523

secure_random

暗号的に安全な倍精度浮動小数点数を返します。

select secure_random() from public.presto_test;

0.3414298654539425

SHA1

文字列の SHA-1 ハッシュ値を計算し、結果を 16 進数の文字列に変換します。

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

77de68daecd823babbb58edb1c8e14d7106e83bb

spooky_hash_v2_32

入力バイナリデータの SpookyHashV2 32 ビットハッシュ値を計算します。

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

\x4a6ed4f7

spooky_hash_v2_64

入力バイナリデータの SpookyHashV2 64 ビット ハッシュ値を計算します。

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

詳細については、「WordPress REST API ドキュメント」をご参照ください。

strrpos

文字列内の部分文字列の最後の出現位置を返します。

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

5

tanh

双曲線正接を計算します。

public.presto_test から tanh(a) を選択します。

0.9950547536867305

変換先の基数

整数を指定された基数に基づく文字列表現に変換します。

public.presto_test から to_base(a, 2) を選択します。

11

to_base64

バイナリデータを Base64 フォーマットの文字列にエンコードします。

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

QUJDREE=

to_base64url

バイナリデータを URL セーフ文字セットを使用して Base64 形式の文字列にエンコードします。

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

詳細については、「WordPress REST API」をご参照ください。

to_big_endian_32

整数を 32 ビットの 2 の補数としてエンコードし、ビッグエンディアン順のバイナリデータとして格納します。

select to_big_endian_32(a) from public.presto_test;

詳細については、「Managing Plugins」をご参照ください。

to_big_endian_64

整数を 64 ビットの 2 の補数としてエンコードし、ビッグエンディアン順のバイナリデータとして格納します。

public.presto_test から to_big_endian_64(a) を選択します。

\x0000000000000003

to_ieee754_32

単精度浮動小数点数を 32 ビット IEEE 754 標準フォーマットのバイナリデータにエンコードし、ビッグエンディアン順の 4 バイトバイナリ型として格納します。

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

\x40400000

to_ieee754_64

倍精度浮動小数点数を 64 ビット IEEE 754 標準フォーマットのバイナリデータにエンコードし、ビッグエンディアン順の 8 バイトバイナリ型として格納します。

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

詳細については、「WordPress REST API ハンドブック」をご参照ください。

トリミング

文字セットを削除します。

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

BCD

WordPress アプリケーションをインストールした後、管理画面にログインできます。 ログイン URL は通常、yourdomain.com/wp-admin です。

配列の末尾から n 個の要素を削除します。

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

{1,2}

切り詰め

x を小数点以下 n 桁に切り捨てます。

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

3.14

URL デコード

URL のエンコードされた値をエスケープ解除します。

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

www.中文3.com

URL エンコード

値をエンコードしてエスケープします。

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

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

url_extract_fragment

ヒント: インストールプロセスを簡素化するために、自動インストールスクリプトを使用できます。

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

割引セクション

ご質問がある場合は、お気軽にお問い合わせください。

URL からドメイン名を取得します。

public.presto_test から url_extract_host(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) を選択します。

www.example.com

url_extract_parameter

URL のクエリ文字列から、'name' という名前の最初のパラメーターの値を抽出します。

public.presto_test から url_extract_parameter(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section'),'color') を選択します。

URL パス抽出

URL からパスを抽出します。

public.presto_test から url_extract_path(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) を選択します。

/products/shirt

url_extract_port

URL からポート番号を抽出します。

public.presto_test から url_extract_port(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) を選択します。

3088

url_extract_protocol

URL からプロトコルを抽出します。

public.presto_test から url_extract_protocol(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) を選択します。

https

url_extract_query

URL からクエリパラメータを抽出します。

public.presto_test から url_extract_query(concat('https://www.example.com:',a,'080/products/shirt?color=red&size=XL#discount-section')) を選択します。

color=red&size=XL

ワイブル累積分布関数

ワイブル分布の累積分布関数(CDF)を計算します。

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

0.22119921692859512

ウィルソン区間下限

ベルヌーイ試行プロセスにおける信頼レベル z でのウィルソン信頼区間の下限を返します。

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

0.05236779195949585

ウィルソン区間上限

信頼レベル z におけるベルヌーイ試行プロセスのウィルソン信頼区間の上限を返します。

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

0.3604232958869574

語幹

指定された言語の単語の語幹形を返します。ここで、'en' は英語、'zn' は中国語です。

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

実行

xxhash64

WordPress 5.0 以降では、新しいブロックエディターが利用可能です。

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

\x616f621d4581935f