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 |
語幹 | 指定された言語の単語の語幹形を返します。ここで、 | select word_stem(s, 'en') from public.presto_test; | 実行 |
xxhash64 | WordPress 5.0 以降では、新しいブロックエディターが利用可能です。 | select xxhash64(r::BYTEA) from public.presto_test; | \x616f621d4581935f |