ハッシュ関数
ハッシュ関数は、要素を決定論的かつ疑似ランダムにシャッフルするために使用できます。
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
戻り値
入力文字列の BLAKE3 による 32 バイトのハッシュ値を固定長文字列として返します。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) | 末尾に存在する場合は、末尾の /、?、# のいずれか 1 文字を取り除いたうえで、URL 階層の N レベル目までの文字列からハッシュを計算します。レベルの定義は URLHierarchy と同じです。 |
構文
引数
戻り値
url の算出されたハッシュ値を返します。UInt64
例
使用例
指定レベルでの URL のハッシュ
cityHash64
導入バージョン: v1.1
64 ビットの CityHash ハッシュ値を生成します。
これは高速な非暗号学的ハッシュ関数です。 文字列型の引数には CityHash アルゴリズムを使用し、それ以外のデータ型の引数には実装依存の高速な非暗号学的ハッシュ関数を使用します。 この関数は、最終結果を得るために CityHash のコンビネーターを使用します。
Google は、CityHash が ClickHouse に追加された後に CityHash のアルゴリズムを変更しました。 つまり、ClickHouse の cityHash64 と Google のアップストリーム 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 として解釈します。この関数は比較的低速です(1 プロセッサコアあたり 1 秒間に 500 万件の短い文字列)。
代わりに sipHash64 関数の使用を検討してください。
この関数は可変数の入力パラメータを取ります。 引数には、サポートされている任意のデータ型を指定できます。 一部のデータ型では、引数の型が異なっていても(サイズの異なる整数、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と、同一データを持つ対応する Array(Tuple(key, value)) 型など)、同じ値に対してはハッシュ関数の計算結果が同じになる場合があります。
構文
引数
arg1[, arg2, ..., argN]— ハッシュを計算する可変個数の引数。Any
戻り値
指定した入力引数の half MD5 ハッシュ値を計算し、ビッグエンディアンのバイト順序で UInt64 として返します。UInt64
例
使用例
hiveHash
導入バージョン: v20.1
文字列から「HiveHash」を計算します。
これは符号ビットをゼロクリアした JavaHash と同じです。
この関数は、バージョン 3.0 より前の Apache Hive で使用されています。
このハッシュ関数は性能が高くありません。 すでに別のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。
構文
引数
arg— ハッシュ化する入力文字列。String
戻り値
入力文字列に対して計算された「hive hash」の値を返します。Int32
例
使用例
icebergHash
導入バージョン: v25.5
Iceberg の ハッシュ変換ロジックを実装します。
構文
引数
返される値
32 ビットの Murmur3 ハッシュ(x86 バリアント、シード値 0)を表す 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
入力値の 32 ビット MurmurHash2 ハッシュ値を、Kafka で使用されているものと同じシードを用い、かつ最上位ビットを除外することで、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-グラムに分割し、同じ入力に対して ngramMinHash 関数で計算されるハッシュ値のうち、最小値と最大値を持つ N-グラムを返します。
大文字と小文字を区別します。
構文
引数
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 と最大の n-gram を返します。
大文字小文字は区別されません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringngramsize— 省略可。n-グラムのサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
hashnum 個の n-グラムを持つ 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 グラムに分割し、同じ入力に対して ngramMinHashUTF8 関数で計算されるハッシュ値が最小および最大となる N グラムを返します。
大文字と小文字は区別されます。
構文
引数
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 間のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— 大文字・小文字を区別してsimhashを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズで、1から25までの任意の数値。既定値は3。UInt8
戻り値
入力文字列のハッシュ値を返します。UInt64
例
使用例
ngramSimHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を、ngramsize 文字からなる n-gram に分割し、n-gram の simhash を返します。
大文字と小文字を区別しません。
bitHammingDistance と組み合わせて、重複に近い文字列の検出に使用できます。
2 つの文字列について計算した simhash のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— 大文字小文字を区別せずにsimhashを計算する対象の文字列。Stringngramsize— 省略可能。n-gram のサイズで、1から25までの任意の数値。デフォルト値は3。UInt8
戻り値
例
使用例
ngramSimHashCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を ngramsize 個の文字からなる n-gram に分割し、n-gram の simhash を返します。
大文字と小文字を区別しません。
bitHammingDistance と組み合わせて、重複度の高い文字列の検出に使用できます。2 つの文字列について計算された simhash 値同士の Hamming Distance が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
ngramSimHashUTF8
導入バージョン: v21.1
UTF-8 エンコードされた文字列を ngramsize 個の文字からなる n-gram に分割し、その n-gram の simhash を返します。
大文字と小文字を区別します。
bitHammingDistance と組み合わせて、部分的に重複した文字列の検出に使用できます。
2 つの文字列について計算された simhashes のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
sipHash128
導入バージョン: v1.1
sipHash64 に似ていますが、128 ビットのハッシュ値を生成します。つまり、最終的な XOR フォールディング処理が 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 倍高速で動作します。
この関数は、すべての入力パラメータを文字列として解釈し、それぞれについてハッシュ値を計算します。 その後、以下のアルゴリズムでそれらのハッシュ値を結合します:
- 1 番目と 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 語からなる部分列(シングル)に分割し、各シングルごとにハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。
最小ハッシュの計算には hashnum 個の最小ハッシュを、最大ハッシュの計算には hashnum 個の最大ハッシュを使用します。
大文字と小文字は区別されます。
tupleHammingDistance を使って、準重複文字列を検出するために利用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一であるとみなせます。
構文
引数
string— ハッシュ値を計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(shingle)のサイズ。1から25の範囲の任意の整数。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。1から25の範囲の任意の整数。デフォルト値は6。UInt8
戻り値
2 つのハッシュ値(最小値と最大値)を要素とするタプルを返します。Tuple(UInt64, UInt64)
例
使用例
wordShingleMinHashArg
導入バージョン: v1.1
ASCII 文字列を shinglesize 語ごとの部分(シングル)に分割し、同じ入力を用いて wordShingleMinHash 関数で計算される単語ハッシュの最小値および最大値を持つシングルを返します。
ケースセンシティブです。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(word shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用する最小ハッシュと最大ハッシュの個数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
hashnum 個のワードシングルを含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashArgCaseInsensitive
導入バージョン: v21.1
ASCII文字列を、shinglesize 個の単語からなる部分(シングル)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitive 関数で計算される、単語ハッシュが最小および最大となるシングルを返します。
大文字と小文字は区別されません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングルのサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の個数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
hashnum 個のワードシングルをそれぞれ含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashArgCaseInsensitiveUTF8
導入バージョン: v21.1
UTF-8 文字列を shinglesize 語ずつの部分(シングル)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitiveUTF8 関数で計算される単語ハッシュの最小値および最大値に対応するシングルを返します。
大文字小文字は区別されません。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可。ワードシングル(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— 省略可。ワードシングル(shingle)のサイズ。1から25までの任意の値。デフォルト値は3。UInt8hashnum— 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。1から25までの任意の値。デフォルト値は6。UInt8
戻り値
hashnum 個のワードシングルをそれぞれ含む 2 つのタプルから成るタプルを返します。Tuple(Tuple(String))
例
使用例
wordShingleMinHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を shinglesize 語からなる部分(シングル)に分割し、各ワードシングルのハッシュ値を計算して、そのハッシュを要素とするタプルを返します。
hashnum 個の最小ハッシュを使用して最小ハッシュを計算し、hashnum 個の最大ハッシュを使用して最大ハッシュを計算します。
大文字小文字は区別されません。
tupleHammingDistance と組み合わせて、準重複文字列を検出するために利用できます。
2つの文字列について、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一であると見なせます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— オプション。ワードシングル(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 個の単語から成る部分列(シングル, shingle)に分割し、各単語シングルのハッシュ値を計算して、これらのハッシュを要素とするタプルを返します。
hashnum 個の最小ハッシュを使って最小ハッシュを計算し、hashnum 個の最大ハッシュを使って最大ハッシュを計算します。
大文字と小文字は区別されます。
tupleHammingDistance を用いて準重複文字列を検出するために利用できます。
2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなされます。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可。単語シングル(shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8hashnum— 省略可。結果の計算に使用する最小ハッシュと最大ハッシュの数。1から25までの任意の数値。デフォルト値は6。UInt8
戻り値
2 つのハッシュ(最小値と最大値)を含むタプルを返します。Tuple(UInt64, UInt64)
例
使用例
wordShingleSimHash
導入バージョン: v21.1
ASCII 文字列を shinglesize 語から成る部分(ワードシングル)に分割し、そのワードシングルの simhash を返します。
大文字と小文字は区別されます。
bitHammingDistance と組み合わせて、部分的に重複した文字列の検出に使用できます。
2 つの文字列について計算された simhashes のハミング距離が小さいほど、これらの文字列が同一または非常に類似している可能性が高くなります。
構文
引数
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashCaseInsensitive
導入バージョン: v21.1
ASCII 文字列を shinglesize 語からなる部分文字列(シングル)に分割し、その単語シングルの simhash を返します。
大文字小文字は区別されません。
bitHammingDistance を用いた、ほぼ重複した文字列の検出に使用できます。
2 つの文字列について計算された simhash 同士のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(shingle)のサイズ。1から25までの任意の数値。デフォルト値は3。UInt8
戻り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashCaseInsensitiveUTF8
導入バージョン: v1.1
UTF-8 エンコードされた文字列を、shinglesize 語から成るシングル(shingle)に分割し、その単語シングルの simhash を返します。
大文字・小文字は区別されません。
bitHammingDistance を使用して、類似した重複文字列の検出に利用できます。
2 つの文字列から計算された simhashes の ハミング距離 が小さいほど、それらの文字列が同じである可能性が高くなります。
構文
引数
string— ハッシュを計算する対象の文字列。Stringshinglesize— 省略可能。ワードシングル(shingle)のサイズ。1から25までの任意の整数。デフォルト値は3。UInt8
返り値
計算されたハッシュ値を返します。UInt64
例
使用例
wordShingleSimHashUTF8
導入バージョン: v21.1
UTF-8 文字列を、shinglesize 語から成る連続した部分列(シングル、shingle)に分割し、語シングル(word shingle)の simhash 値を返します。
大文字と小文字を区別します。
bitHammingDistance と組み合わせて、近似重複文字列を検出するために使用できます。
2 つの文字列について計算された simhash 値のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。
構文
引数
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
例
使用例