ハッシュ関数
ハッシュ関数は、要素を決定論的に疑似ランダムな順序へシャッフルするために使用できます。
Simhash は、近い(類似した)引数に対して近いハッシュ値を返すハッシュ関数です。
ほとんどのハッシュ関数は、任意の型の引数を任意個受け付けます。
NULL のハッシュは NULL です。Nullable カラムに対して NULL ではないハッシュ値を得るには、次のようにタプルでラップします:
テーブル全体の内容のハッシュを計算するには、sum(cityHash64(tuple(*)))(または他のハッシュ関数)を使用します。tuple によって、NULL 値を含む行がスキップされるのを防ぎます。sum によって、行の順序に依存しないようにします。
BLAKE3
導入バージョン: v22.10
BLAKE3 ハッシュ文字列を計算し、その結果のバイト列を FixedString として返します。 この暗号学的ハッシュ関数は、BLAKE3 Rust ライブラリを用いて ClickHouse に統合されています。 この関数はかなり高速で、SHA-2 と比べておよそ 2 倍のパフォーマンスを示しつつ、SHA-256 と同じ長さのハッシュを生成します。 戻り値は、型 FixedString(32) のバイト配列で表される BLAKE3 ハッシュです。
構文
引数
message— ハッシュ化する入力文字列。String
戻り値
入力文字列に対する 32 バイトの BLAKE3 ハッシュ値を固定長文字列として返します。FixedString(32)
例
hash
MD4
導入バージョン: v21.11
指定された文字列の MD4 ハッシュ値を計算します。
構文
引数
s— ハッシュ化する入力文字列。String
戻り値
指定された入力文字列の MD4 ハッシュを固定長文字列として返します。FixedString(16)
例
使用例
MD5
導入バージョン: v1.1
指定された文字列の MD5 ハッシュ値を計算します。
構文
引数
s— ハッシュ化する入力文字列。String
返り値
指定された入力文字列の MD5 ハッシュを固定長の文字列として返します。FixedString(16)
例
使用例
RIPEMD160
導入バージョン: v24.10
指定した文字列の RIPEMD-160 ハッシュ値を計算します。
構文
引数
s— ハッシュ化する入力文字列。String
戻り値
指定された入力文字列の RIPEMD160 ハッシュ値を固定長文字列として返します。FixedString(20)
例
使用例
SHA1
導入バージョン: v1.1
指定された文字列の SHA1 ハッシュ値を計算します。
構文
引数
s— ハッシュ化する入力文字列String
戻り値
指定された入力文字列の SHA1 ハッシュ値を固定長文字列として返します。FixedString(20)
例
使用例
SHA224
導入バージョン: v1.1
指定した文字列の SHA224 ハッシュを計算します。
構文
引数
s— ハッシュ化する入力値。String
返り値
与えられた入力文字列の SHA224 ハッシュを固定長文字列として返します。FixedString(28)
例
使用例
SHA256
導入バージョン: v1.1
与えられた文字列の SHA256 ハッシュを計算します。
構文
引数
s— ハッシュ化する入力文字列。String
戻り値
指定された入力文字列の SHA256 ハッシュを固定長文字列として返します。FixedString(32)
例
使用例
SHA384
導入バージョン: v1.1
指定された文字列の SHA384 ハッシュを計算します。
構文
引数
s— ハッシュ化する入力文字列。String
戻り値
指定された入力文字列の SHA384 ハッシュ値を固定長文字列として返します。FixedString(48)
例
使用例
SHA512
導入バージョン: v1.1
指定した文字列の SHA512 ハッシュを計算します。
構文
引数
s— ハッシュ化する入力文字列String
戻り値
指定された入力文字列の SHA512 ハッシュ値を、固定長文字列として返します。FixedString(64)
例
使用例
SHA512_256
導入バージョン: v1.1
指定した文字列の SHA512_256 ハッシュ値を計算します。
構文
引数
s— ハッシュ化する入力文字列。String
戻り値
与えられた入力文字列の SHA512_256 ハッシュを固定長文字列として返します。FixedString(32)
例
使用例
URLHash
導入バージョン: v1.1
URL から取得した文字列に対して、何らかの正規化処理を行ったうえで適用する、高速かつ品質の高い非暗号学的ハッシュ関数です。
このハッシュ関数には 2 つのモードがあります:
| Mode | Description |
|---|---|
URLHash(url) | 末尾に存在する場合は、末尾の記号 /、?、# のいずれか 1 つを取り除いた文字列からハッシュ値を計算します。 |
URLHash(url, N) | URL 階層の N レベル目までの文字列から、末尾に存在する場合は末尾の記号 /、?、# のいずれか 1 つを取り除いたうえでハッシュ値を計算します。レベルは URLHierarchy と同じ定義です。 |
構文
引数
返される値
url に対して算出されたハッシュ値を返します。UInt64
例
使用例
指定レベルの URL ハッシュ
cityHash64
導入バージョン: v1.1
64ビットの CityHash ハッシュ値を生成します。
これは高速な非暗号学的ハッシュ関数です。 文字列パラメータに対しては CityHash アルゴリズムを使用し、それ以外のデータ型のパラメータに対しては実装依存の高速な非暗号学的ハッシュ関数を使用します。 最終結果を得るために CityHash のコンビネータを使用します。
Google は、CityHash が ClickHouse に組み込まれた後に CityHash のアルゴリズムを変更しました。 つまり、現在では ClickHouse の cityHash64 と Google の upstream CityHash は異なる結果を生成します。 ClickHouse の cityHash64 は CityHash v1.0.2 に対応します。
異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が同じになる場合があります。
これは例えば、サイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、対応する Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる任意個数の入力引数。Any
戻り値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
呼び出し例
テーブル全体のチェックサムを、行順まで含めて正確に計算する
farmFingerprint64
導入バージョン: v20.12
Fingerprint64 メソッドを使用して 64 ビットの FarmHash 値を生成します。
安定かつ移植性の高い値が必要な場合は、farmHash64 よりも farmFingerprint64 を優先して使用してください。
計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同一になる場合があります。
これは、例えばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map 型および対応する Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュ値を計算する対象となる可変個数の入力引数。Any
戻り値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
使用例
farmHash64
導入バージョン: v1.1
Hash64 メソッドを使用して、64 ビットの FarmHash を生成します。
安定してポータブルな値が必要な場合は、farmFingerprint64 の使用を推奨します。
計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同一になる場合があります。
これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、それに対応する同じデータを持つ Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算するための任意個の入力引数。Any
戻り値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
使用例
gccMurmurHash
導入バージョン: v20.1
入力値に対して、GCC が使用しているものと同じシードを用いて、64ビットの MurmurHash2 ハッシュを計算します。
Clang ビルドと GCC ビルドの間で同じ動作をします。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する任意個数の引数。Any
戻り値
入力引数のハッシュ値を計算して返します。UInt64
例
使用例
halfMD5
導入バージョン: v1.1
すべての入力パラメータを文字列として解釈し、それぞれについて MD5 ハッシュ値を計算します。次に、これらのハッシュを結合し、結果の文字列に対して再度ハッシュを計算し、その先頭 8 バイトを取り出して、ビッグエンディアンのバイト順で UInt64 型として解釈します。この関数は比較的低速です(プロセッサコアあたり毎秒 500 万件の短い文字列)。
代わりに sipHash64 関数の使用を検討してください。
この関数は可変個数の入力パラメータを取ります。 引数にはサポートされている任意のデータ型を使用できます。 一部のデータ型では、引数の型が異なる場合でも(サイズの異なる整数、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と対応する Array(Tuple(key, value)) 型など)、同じ値に対してハッシュ関数が計算する値が同一になる場合があります。
構文
引数
arg1[, arg2, ..., argN]— ハッシュを計算するための可変長引数。Any
戻り値
指定された入力パラメータの half MD5 ハッシュを計算し、ビッグエンディアンのバイトオーダーで UInt64 として返します。UInt64
例
使用例
hiveHash
導入バージョン: v20.1
文字列から「HiveHash」を計算します。
これは符号ビットをゼロクリアした JavaHash です。
この関数は Apache Hive の 3.0 より前のバージョンで使用されています。
このハッシュ関数は性能が良くありません。 すでに他のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。
構文
引数
arg— ハッシュ対象の入力文字列。String
戻り値
入力文字列に対して計算された「hive ハッシュ値」を返します。Int32
例
使用例
icebergHash
導入バージョン: v25.5
Iceberg が定義する hashing transform のロジックを実装します。
構文
引数
value— ハッシュ値を計算する対象の値。IntegerまたはBoolまたはDecimalまたはFloat*またはStringまたはFixedStringまたはUUIDまたはDateまたはTimeまたはDateTime
戻り値
32 ビットの Murmur3 ハッシュ(シード値 0 の x86 版)を返します。型は Int32 です。
例
例
intHash32
導入バージョン: v1.1
整数の 32 ビットハッシュ値を計算します。
このハッシュ関数は比較的高速ですが、暗号学的ハッシュ関数ではありません。
構文
引数
arg— ハッシュ化する整数。(U)Int*
戻り値
入力整数の計算された 32 ビットハッシュコードを返します。UInt32
例
使用例
intHash64
導入されたバージョン: v1.1
整数の 64 ビットハッシュ値を計算します。
このハッシュ関数は比較的高速で(intHash32 よりも高速です)が、暗号学的ハッシュ関数ではありません。
構文
引数
int— ハッシュ化する整数。(U)Int*
戻り値
64ビットハッシュコード。UInt64
例
使用例
javaHash
導入バージョン: v20.1
次の値から JavaHash を計算します:
このハッシュ関数はパフォーマンスが高くありません。 すでに別のシステムでこのアルゴリズムが使われていて、同じ結果を計算する必要がある場合にのみ使用してください。
Java は符号付き整数に対するハッシュ計算のみをサポートしています。 そのため、符号なし整数のハッシュを計算したい場合は、適切な符号付きの ClickHouse 型にキャストする必要があります。
構文
引数
arg— ハッシュ化する入力値。Any
戻り値
arg の計算されたハッシュ値を返します。型は Int32
例
使用例 1
使用例 2
javaHashUTF16LE
導入バージョン: v20.1
文字列に含まれるバイト列が UTF-16LE エンコーディングの文字列を表していると仮定して、JavaHash を計算します。
構文
引数
arg— UTF-16LE でエンコードされた文字列。String
戻り値
UTF-16LE でエンコードされた文字列のハッシュ値を返します。Int32
例
使用例
jumpConsistentHash
導入バージョン: v1.1
整数値に対して jump consistent hash を計算します。
構文
引数
戻り値
計算されたハッシュ値を返します。 Int32
例
使用例
kafkaMurmurHash
導入バージョン: v23.4
入力値に対して、Kafka と同じシード値を用い、かつ最上位ビットを除外することで、32 ビットの MurmurHash2 ハッシュ値を計算し、Default Partitioner と互換性を持たせます。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる任意個の引数。Any
返される値
入力引数に対して計算されたハッシュ値を返します。UInt32
例
使用例
keccak256
導入バージョン: v25.4
指定された文字列の Keccak-256 暗号学的ハッシュを計算します。 このハッシュ関数は、ブロックチェーンアプリケーション、とりわけ Ethereum で広く使用されています。
構文
引数
message— ハッシュ化する入力文字列。String
戻り値
入力文字列から計算した 32 バイトの Keccak-256 ハッシュ値を固定長文字列として返します。FixedString(32)
例
使用例
kostikConsistentHash
導入バージョン: v22.6
Konstantin 'Kostik' Oblakov による、時間計算量・空間計算量ともに O(1) のコンシステントハッシュアルゴリズムです。
n <= 32768 の場合にのみ効率的です。
構文
別名: yandexConsistentHash
引数
戻り値
計算されたハッシュ値を返します。UInt16
例
使用例
metroHash64
導入バージョン: v1.1
64ビットの MetroHash ハッシュ値を生成します。
計算されるハッシュ値は、異なる引数型であっても同じ入力値に対して同一になる場合があります。
これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、それに対応する Array(Tuple(key, value)) 型などに該当します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算するための可変個の入力引数。Any
返される値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
使用例
murmurHash2_32
導入バージョン: v18.5
入力値に対する MurmurHash2 ハッシュを計算します。
計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同じになる場合があります。
これは、例えばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map 型と、それに対応する Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる可変個数の入力引数。Any
返り値
入力引数から計算されたハッシュ値を返します。UInt32
例
使用例
murmurHash2_64
導入バージョン: v18.10
入力値の MurmurHash2 ハッシュを計算します。
異なる引数型であっても、同一の入力値に対して同じハッシュ値が計算される場合があります。
これは、例えばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map とそれに対応する Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算するための可変個の入力引数。Any
返される値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
使用例
murmurHash3_128
導入: v18.10
入力値の 128 ビット MurmurHash3 ハッシュを計算します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算するための任意個の入力引数。Any
戻り値
入力引数に対して計算された 128 ビットの MurmurHash3 ハッシュ値を返します。FixedString(16)
例
使用例
murmurHash3_32
導入バージョン: v18.10
MurmurHash3 のハッシュ値を生成します。
計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同じになる場合があります。
これは、例えばサイズの異なる整数型、同一のデータを持つ名前付きおよび名前なしの Tuple、同一のデータを持つ Map と対応する Array(Tuple(key, value)) 型などに影響します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる任意個数の入力引数。Any
戻り値
入力引数に対して計算されたハッシュ値を返します。UInt32
例
使用例
murmurHash3_64
導入バージョン: v18.10
入力値の MurmurHash3 ハッシュを計算します。
計算されたハッシュ値は、引数の型が異なっていても、同じ入力値に対して一致する場合があります。
このことは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、それに対応する Array(Tuple(key, value)) 型などが該当します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる可変長の入力引数。Any
戻り値
入力引数に対して計算されたハッシュ値を返します。UInt64
例
使用例
ngramMinHash
導入バージョン: v21.1
ASCII 文字列を ngramsize 文字からなる n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュ値からなるタプルを返します。
最小ハッシュの計算には hashnum 個の最小ハッシュ値を、最大ハッシュの計算には hashnum 個の最大ハッシュ値を使用します。
大文字・小文字は区別されます。
tupleHammingDistance を用いて、ほぼ重複した文字列を検出するために使用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可能。N-gram のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小および最大ハッシュの数。1から25までの任意の数値。デフォルト値は6。UInt8
返される値
最小値と最大値、2 つのハッシュ値を要素とするタプルを返します。Tuple
例
使用例
ngramMinHashArg
導入バージョン: v21.1
ASCII 文字列を ngramsize 文字長の n-gram に分割し、同じ入力に対して ngramMinHash 関数で計算されるハッシュ値のうち、最小値と最大値をとる n-gram を返します。
大文字と小文字を区別します。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズ。1から25までの任意の数値。既定値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小および最大ハッシュの個数。1から25までの任意の数値。既定値は6。UInt8
返される値
それぞれが hashnum 個の n-gram を含む 2 つのタプルから成るタプルを返します。Tuple(String)
例
使用例
ngramMinHashArgCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を ngramsize 文字からなる n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitive 関数で計算されたハッシュ値が最小および最大となる n-gram を返します。
大文字と小文字は区別されません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— オプション。n-gram のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— オプション。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
hashnum 個の n-gram を含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))
例
使用例
ngramMinHashArgCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を ngramsize 文字からなる n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitiveUTF8 関数で計算されたハッシュのうち最小値と最大値を持つ n-gram を返します。
大文字小文字は区別されません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可。n-gram のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可。結果の計算に使用される、最小ハッシュおよび最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
返される値
hashnum 個の n-gram をそれぞれ含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))
例
使用例
ngramMinHashArgUTF8
導入バージョン: v21.1
UTF-8 文字列を ngramsize 文字からなる N-gram に分割し、同じ入力に対して ngramMinHashUTF8 関数で計算されるハッシュ値が最小および最大となる N-gram を返します。
大文字と小文字を区別します。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果を計算するために使用する最小ハッシュおよび最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
返される値
hashnum 個の n-gram をそれぞれ含む 2 つのタプルから構成されるタプルを返します。Tuple(Tuple(String))
例
使用例
ngramMinHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を、ngramsize 個の文字から成る n-gram に分割し、それぞれの n-gram に対してハッシュ値を計算し、それらのハッシュ値を含むタプルを返します。
hashnum 個の最小ハッシュを用いて最小ハッシュを計算し、hashnum 個の最大ハッシュを用いて最大ハッシュを計算します。
大文字小文字は区別されません。
tupleHammingDistance を使用して、類似(半重複)した文字列を検出するために使用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなされます。
構文
引数
string— 文字列。String。 -ngramsize— n-gram のサイズ。省略可能。取りうる値:1から25までの整数。デフォルト値:3。UInt8。 -hashnum— 結果の計算に使用される最小値および最大値としてのハッシュ値の数。省略可能。取りうる値:1から25までの整数。デフォルト値:6。UInt8。
戻り値
2 つのハッシュ値(最小値と最大値)から成るタプル。Tuple(UInt64, UInt64)。Tuple
例
使用例
ngramMinHashCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を ngramsize 個の文字からなる n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。
hashnum 個の最小ハッシュを使って最小ハッシュを計算し、hashnum 個の最大ハッシュを使って最大ハッシュを計算します。
大文字小文字は区別されません。
tupleHammingDistance と組み合わせて、ほぼ同一の文字列を検出するために使用できます。
2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一であると見なせます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— オプション。n-gram のサイズ。1から25までの任意の値。デフォルト値は3。UInt8hashnum— オプション。結果の計算に使用される最小ハッシュと最大ハッシュの個数。1から25までの任意の値。デフォルト値は6。UInt8
戻り値
最小ハッシュ値と最大ハッシュ値の 2 つのハッシュを含むタプルを返します。Tuple
例
使用例
ngramMinHashUTF8
導入バージョン: v21.1
UTF-8 文字列を ngramsize 文字からなる n-gram に分割し、各 n-gram のハッシュ値を計算して、これらのハッシュを要素とするタプルを返します。
hashnum 個の最小ハッシュを使用して最小ハッシュを計算し、hashnum 個の最大ハッシュを使用して最大ハッシュを計算します。
大文字と小文字は区別されます。
tupleHammingDistance と組み合わせて、部分的に重複する文字列を検出するために使用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同一であれば、それらの文字列は同じとみなされます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小ハッシュと最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
返される値
最小ハッシュ値と最大ハッシュ値の 2 つを要素とするタプルを返します。Tuple
例
使用例
ngramSimHash
導入バージョン: v21.1
ASCII 文字列を ngramsize 文字からなる n-gram に分割し、その n-gram の simhash を返します。
bitHammingDistance を使用して、類似した(部分的に重複する)文字列の検出に利用できます。2 つの文字列について計算された simhashes の Hamming 距離 が小さいほど、それら 2 つの文字列が同じである可能性が高くなります。
構文
引数
string— 大文字小文字を区別してsimhashを計算する対象の文字列。Stringngramsize— 省略可能な引数。n-gram のサイズで、1から25までの任意の数値。デフォルト値は3。UInt8
戻り値
入力文字列に対して計算されたハッシュ値を返します。UInt64
例
使用例
ngramSimHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を、長さ ngramsize のシンボル列からなる n-gram に分割し、その n-gram の simhash を返します。
大文字小文字は区別しません。
bitHammingDistance と組み合わせて、近似重複文字列の検出に使用できます。
2 つの文字列から計算された simhashes の ハミング距離 が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— 大文字小文字を区別せずにsimhashを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズ。1から25までの任意の値。デフォルト値は3。UInt8
戻り値
例
使用例
ngramSimHashCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を、ngramsize 文字からなる n-gram に分割し、その n-gram の simhash を返します。
大文字と小文字を区別しません。
bitHammingDistance を使用して、部分的に重複した文字列の検出に利用できます。2 つの文字列について計算された simhash の ハミング距離 が小さいほど、これらの文字列が同一である可能性が高くなります。
構文
引数
返される値
計算されたハッシュ値を返します。UInt64
例
使用例
ngramSimHashUTF8
導入バージョン: v21.1
UTF-8 エンコードされた文字列を、ngramsize 個のシンボルからなる n-gram に分割し、n-gram の simhash を返します。
大文字と小文字を区別します。
bitHammingDistance と組み合わせて、ほぼ重複している文字列の検出に使用できます。
2 つの文字列について計算された simhashes の Hamming distance が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
返り値
計算されたハッシュ値を返します。UInt64
例
使用例
sipHash128
導入バージョン: v1.1
sipHash64 と同様ですが、128 ビットのハッシュ値を生成します。つまり、最終的な xor-folding の処理が 128 ビットまで行われます。
この 128 ビット版はリファレンス実装と異なり、より弱くなっています。
このバージョンが存在するのは、実装当時、SipHash に対する公式な 128 ビット拡張が存在しなかったためです。
新規プロジェクトでは sipHash128Reference の使用を推奨します。
構文
引数
arg1[, arg2, ...]— ハッシュを計算する対象となる任意個の入力引数。Any
返される値
128 ビットの SipHash ハッシュ値を返します。FixedString(16)
例
使用例
sipHash128Keyed
導入バージョン: v23.2
sipHash128 と同様ですが、固定キーを使用する代わりに、キーを引数として明示的に指定します。
この 128 ビットのバリアントは参照実装と異なり、強度が低くなっています。
このバージョンが存在するのは、作成当時、SipHash 向けの公式な 128 ビット拡張が存在しなかったためです。
新規プロジェクトでは sipHash128ReferenceKeyed の使用を推奨します。
構文
引数
(k0, k1)— キーを表す 2 つの UInt64 値から成るタプル。Tuple(UInt64, UInt64)arg1[, arg2, ...]— ハッシュを計算するための可変個の入力引数。Any
戻り値
型 FixedString(16) の 128 ビットの SipHash ハッシュ値。FixedString(16)
例
使用例
sipHash128Reference
導入バージョン: v23.2
sipHash128 と同様ですが、SipHash の元の作者による 128 ビットアルゴリズムを実装しています。
構文
引数
arg1[, arg2, ...]— ハッシュを計算するための任意個の入力引数。Any
返り値
入力引数から計算された 128ビットの SipHash ハッシュ値を返します。FixedString(16)
例
使用例
sipHash128ReferenceKeyed
導入バージョン: v23.2
sipHash128Reference と同様ですが、固定キーを使用する代わりに、明示的に指定したキー引数を取ります。
構文
引数
(k0, k1)— キーを表す 2 つの値からなるタプル。Tuple(UInt64, UInt64)arg1[, arg2, ...]— ハッシュを計算する対象となる可変個数の入力引数。Any
戻り値
入力引数をもとに計算された 128 ビットの SipHash ハッシュ値を返します。FixedString(16)
例
使用例
sipHash64
導入バージョン: v1.1
64 ビットの SipHash ハッシュ値を生成します。
これは暗号学的ハッシュ関数であり、MD5 ハッシュ関数より少なくとも 3 倍高速に動作します。
この関数はすべての入力パラメータを文字列として解釈し、それぞれについてハッシュ値を計算します。 その後、次のアルゴリズムでこれらのハッシュ値を結合します。
- 最初のハッシュ値と 2 番目のハッシュ値を連結して配列を作成し、それに対してハッシュを計算します。
- 直前に計算したハッシュ値と 3 番目の入力パラメータのハッシュ値を、同様の方法でハッシュします。
- この計算を、元の入力に対応する残りすべてのハッシュ値に対して繰り返します。
異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が同じになる場合があります。
これは例えば、サイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、および同じデータを持つ Map とそれに対応する Array(Tuple(key, value)) 型に影響します。
構文
引数
arg1[, arg2, ...]— 可変個数の入力引数。Any
返される値
入力引数のハッシュ値を計算して返します。UInt64
例
使用例
sipHash64Keyed
導入バージョン: v23.2
sipHash64 と同様ですが、固定キーを使用する代わりに、明示的なキー引数を受け取ります。
構文
引数
(k0, k1)— キーを表す 2 つの値からなるタプル。Tuple(UInt64, UInt64)arg1[,arg2, ...]— 可変長の入力引数。Any
戻り値
入力値から計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleMinHash
導入バージョン: v21.1
ASCII 文字列を、shinglesize 語からなる部分(shingle)に分割し、それぞれの word shingle に対してハッシュ値を計算し、これらのハッシュ値からなるタプルを返します。
hashnum 個の最小ハッシュを用いて最小ハッシュを計算し、hashnum 個の最大ハッシュを用いて最大ハッシュを計算します。
大文字と小文字は区別されます。
tupleHammingDistance を使用して、類似(部分的に重複)した文字列を検出できます。
2 つの文字列について、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一です。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(word shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果を計算するために使用される最小および最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
2 つのハッシュ値(最小値と最大値)を要素とするタプルを返します。Tuple(UInt64, UInt64)
例
使用例
wordShingleMinHashArg
導入バージョン: v1.1
ASCII 文字列を、shinglesize 語ずつのパーツ(シングル)に分割し、同じ入力に対して wordShingleMinHash 関数で計算された単語ハッシュのうち、最小値と最大値を持つシングルを返します。
大文字と小文字は区別されます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可。ワードシングルのサイズ。1から25までの整数。デフォルト値は3。UInt8hashnum— 省略可。結果の計算に使用する最小ハッシュおよび最大ハッシュの数。1から25までの整数。デフォルト値は6。UInt8
返される値
それぞれが hashnum 個のワードシングルを含む 2 つのタプルを要素とするタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashArgCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を shinglesize 語ごとのパーツ(シングル)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitive 関数で計算された単語ハッシュの最小値および最大値を持つシングルを返します。
大文字小文字は区別しません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。単語シングル(word shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小および最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
hashnum 個の単語シングルを持つ 2 つのタプルを要素とするタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashArgCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を shinglesize 語ずつの部分(shingle)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitiveUTF8 関数で計算される、単語ハッシュ値が最小および最大となる shingle を返します。
大文字と小文字を区別しません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(word shingle)のサイズ。1から25までの任意の値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小ハッシュと最大ハッシュの個数。1から25までの任意の値。デフォルト値は6。UInt8
戻り値
hashnum 個のワードシングルを持つ 2 つのタプルから成るタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashArgUTF8
導入バージョン: v21.1
UTF-8 文字列を、shinglesize 語ずつの部分(shingle)に分割し、同じ入力に対して wordShingleMinHashUTF8 関数で計算した単語ハッシュの最小値および最大値を持つ shingle を返します。
大文字と小文字は区別されます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングルのサイズ。1から25までの値を指定でき、既定値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小および最大ハッシュの数。1から25までの値を指定でき、既定値は6。UInt8
戻り値
それぞれに hashnum 個のワードシングルを含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を shinglesize 語からなる部分列(shingle)に分割し、それぞれの shingle についてハッシュ値を計算し、そのハッシュ値を要素とするタプルを返します。
hashnum 個の最小ハッシュを使って最小ハッシュを計算し、hashnum 個の最大ハッシュを使って最大ハッシュを計算します。
大文字・小文字は区別しません。
tupleHammingDistance を使って、一部が重複した文字列を検出するために利用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同一であれば、それらの文字列は同一と見なせます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。word shingle のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小ハッシュ値と最大ハッシュ値の個数。1から25までの任意の数値。デフォルト値は6。UInt8
返される値
2 つのハッシュ値(最小値と最大値)からなるタプルを返します。Tuple(UInt64, UInt64)
例
使用例
wordShingleMinHashCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を、shinglesize 語からなるシングル(shingle)に分割し、各単語シングルのハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。
hashnum 個の最小ハッシュを使用して最小ハッシュを計算し、hashnum 個の最大ハッシュを使用して最大ハッシュを計算します。
大文字と小文字を区別しません。
tupleHammingDistance を用いて、類似(準重複)文字列を検出するために使用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小ハッシュと最大ハッシュの数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
最小ハッシュと最大ハッシュの 2 つを要素とするタプルを返します。Tuple(UInt64, UInt64)
例
使用例
wordShingleMinHashUTF8
導入バージョン: v21.1
UTF-8 文字列を shinglesize 語からなる部分(ワードシングル)に分割し、それぞれのワードシングルごとにハッシュ値を計算し、そのハッシュ値からなるタプルを返します。
hashnum 個の最小ハッシュを用いて最小ハッシュを計算し、hashnum 個の最大ハッシュを用いて最大ハッシュを計算します。
大文字小文字を区別します。
tupleHammingDistance を用いて、半重複した文字列を検出するために使用できます。
2 つの文字列について、返されるハッシュが両方で同じであれば、それらの文字列は同一と見なせます。
構文
引数
string— ハッシュ値を計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(word shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
最小値と最大値の 2 つのハッシュ値を含むタプルを返します。 Tuple(UInt64, UInt64)
例
使用例
wordShingleSimHash
導入バージョン: v21.1
ASCII 文字列を shinglesize 語から成るパーツ(shingle)に分割し、その単語 shingle の simhash を返します。
大文字と小文字を区別します。
bitHammingDistance と組み合わせて、類似(セミ重複)文字列の検出に使用できます。
2 つの文字列から計算された simhash のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(word shingle)のサイズで、1から25までの任意の整数値。デフォルト値は3。UInt8
返り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashCaseInsensitive
導入バージョン: v21.1
ASCII文字列を、shinglesize 語から成る部分(シングル)に分割し、単語シングルの simhash を返します。
大文字小文字は区別されません。
bitHammingDistance を用いた、部分的に重複した文字列の検出に使用できます。
2 つの文字列について計算された simhash 同士のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashCaseInsensitiveUTF8
導入バージョン: v1.1
UTF-8 エンコードされた文字列を、長さ shinglesize 語の単語シングル(shingle)の集合に分割し、各単語シングルの simhash を返します。
大文字と小文字は区別しません。
bitHammingDistance と組み合わせて、類似(半重複)文字列の検出に利用できます。
2 つの文字列から計算された simhashes 間のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。シングル(word shingle)のサイズで、1から25までの任意の数値。デフォルト値は3。UInt8
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashUTF8
導入バージョン: v21.1
UTF-8 文字列を shinglesize 語からなるシングル(単語列)に分割し、単語シングルの simhash を返します。
大文字と小文字は区別されます。
bitHammingDistance を用いた、ほぼ重複した文字列の検出に使用できます。
2 つの文字列について計算された simhashes のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— ハッシュ値を計算する対象の文字列。Stringshinglesize— 省略可能。単語シーケンス(shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
wyHash64
導入バージョン:v22.7
64 ビットの wyHash64 ハッシュ値を計算します。
構文
引数
arg— ハッシュ値を計算する文字列引数。String
戻り値
計算された 64 ビットのハッシュ値を返します。UInt64
例
使用例
xxHash32
導入バージョン: v20.1
文字列に対して xxHash を計算します。
64 ビット版については xxHash64 を参照してください。
構文
引数
arg— ハッシュを計算する入力文字列。String
戻り値
入力文字列に対して計算された 32 ビットのハッシュ値を返します。UInt32
例
使用例
xxHash64
導入バージョン: v20.1
文字列に対して xxHash を計算します。
32 ビット版については xxHash32 を参照してください。
構文
引数
arg— ハッシュ化する入力文字列。String
戻り値
入力文字列の 64 ビットハッシュ値を返します。UInt64
例
使用例
xxh3
導入バージョン: v22.12
XXH3 64ビットのハッシュ値を計算します。
構文
引数
expr— 任意のデータ型の式のリスト。Any
戻り値
計算された 64 ビットの xxh3 ハッシュ値を返します。型は UInt64 です。
例
使用例