メインコンテンツへスキップ
メインコンテンツへスキップ

ハッシュ関数

ハッシュ関数は、要素を決定論的かつ疑似ランダムにシャッフルするために使用できます。

SimHash はハッシュ関数であり、近い(類似した)引数に対して近いハッシュ値を返します。

ほとんどのハッシュ関数は、任意の型の任意個数の引数を受け付けます。

注記

NULL のハッシュ値は NULL です。Nullable 列の NULL ではないハッシュ値を取得するには、それをタプルでラップしてください:

SELECT cityHash64(tuple(NULL))
注記

テーブル全体の内容のハッシュを計算するには、sum(cityHash64(tuple(*)))(または他のハッシュ関数)を使用してください。tuple により、NULL 値を含む行が除外されなくなります。sum により、行の順序に依存しなくなります。

BLAKE3

導入バージョン: v22.10

BLAKE3 ハッシュ値を計算し、その結果のバイト列を FixedString として返します。 この暗号学的ハッシュ関数は、BLAKE3 Rust ライブラリを用いて ClickHouse に統合されています。 この関数はかなり高速で、SHA-2 と比べておよそ 2 倍の速度を発揮しつつ、SHA-256 と同じ長さのハッシュを生成します。 戻り値は、型 FixedString(32) のバイト配列としての BLAKE3 ハッシュです。

構文

BLAKE3(message)

引数

  • message — ハッシュ化する入力文字列。String

戻り値

入力文字列の BLAKE3 による 32 バイトのハッシュ値を固定長文字列として返します。FixedString(32)

hash

SELECT hex(BLAKE3('ABC'))
┌─hex(BLAKE3('ABC'))───────────────────────────────────────────────┐
│ D1717274597CF0289694F75D96D444B992A096F1AFD8E7BBFA6EBB1D360FEDFC │
└──────────────────────────────────────────────────────────────────┘

MD4

導入バージョン: v21.11

指定した文字列の MD4 ハッシュ値を計算します。

構文

MD4(s)

引数

  • s — ハッシュ化する入力文字列。String

戻り値

指定された入力文字列の MD4 ハッシュ値を固定長の文字列として返します。FixedString(16)

使用例

SELECT HEX(MD4('abc'));
┌─hex(MD4('abc'))──────────────────┐
│ A448017AAF21D8525FC10AE87AA6729D │
└──────────────────────────────────┘

MD5

導入バージョン: v1.1

指定された文字列の MD5 ハッシュ値を計算します。

構文

MD5(s)

引数

  • s — ハッシュ化する入力文字列。String

戻り値

指定された入力文字列の MD5 ハッシュ値を固定長の文字列として返します。FixedString(16)

使用例

SELECT HEX(MD5('abc'));
┌─hex(MD5('abc'))──────────────────┐
│ 900150983CD24FB0D6963F7D28E17F72 │
└──────────────────────────────────┘

RIPEMD160

導入バージョン: v24.10

指定された文字列の RIPEMD-160 ハッシュ値を計算します。

構文

RIPEMD160(s)

引数

  • s — ハッシュ化する入力文字列。String

戻り値

指定された入力文字列の RIPEMD160 ハッシュを固定長文字列として返します。FixedString(20)

使用例

SELECT HEX(RIPEMD160('素早い茶色の狐が怠惰な犬を飛び越える'));
┌─HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))─┐
│ 37F332F68DB77BD9D7EDD4969571AD671CF9DD3B                      │
└───────────────────────────────────────────────────────────────┘

SHA1

導入バージョン: v1.1

指定された文字列の SHA1 ハッシュ値を計算します。

構文

SHA1(s)

引数

  • s — ハッシュ化する入力文字列 String

戻り値

指定された入力文字列のSHA1ハッシュ値を固定長の文字列として返します。FixedString(20)

使用例

SELECT HEX(SHA1('abc'));
┌─hex(SHA1('abc'))─────────────────────────┐
│ A9993E364706816ABA3E25717850C26C9CD0D89D │
└──────────────────────────────────────────┘

SHA224

導入バージョン:v1.1

指定した文字列の SHA224 ハッシュ値を計算します。

構文

SHA224(s)

引数

  • s — ハッシュ化する入力文字列。String

返される値

指定した入力文字列の SHA224 ハッシュ値を固定長の文字列として返します。FixedString(28)

使用例

SELECT HEX(SHA224('abc'));
┌─hex(SHA224('abc'))───────────────────────────────────────┐
│ 23097D223405D8228642A477BDA255B32AADBCE4BDA0B3F7E36C9DA7 │
└──────────────────────────────────────────────────────────┘

SHA256

導入バージョン: v1.1

指定した文字列の SHA256 ハッシュを計算します。

構文

SHA256(s)

引数

  • s — ハッシュ化する入力文字列。String

戻り値

指定された入力文字列の SHA256 ハッシュ値を固定長文字列として返します。FixedString(32)

使用例

SELECT HEX(SHA256('abc'));
┌─hex(SHA256('abc'))───────────────────────────────────────────────┐
│ BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD │
└──────────────────────────────────────────────────────────────────┘

SHA384

導入バージョン:v1.1

指定した文字列の SHA384 ハッシュ値を計算します。

構文

SHA384(s)

引数

  • s — ハッシュ化する入力文字列。String

戻り値

指定された入力文字列の SHA384 ハッシュ値を固定長の文字列として返します。FixedString(48)

使用例

SELECT HEX(SHA384('abc'));
┌─hex(SHA384('abc'))───────────────────────────────────────────────────────────────────────────────┐
│ CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘

SHA512

導入バージョン: v1.1

与えられた文字列の SHA512 ハッシュ値を計算します。

構文

SHA512(s)

引数

  • s — ハッシュ化する入力文字列 String

戻り値

与えられた入力文字列の SHA512 ハッシュ値を固定長文字列として返します。FixedString(64)

使用例

SELECT HEX(SHA512('abc'));
┌─hex(SHA512('abc'))───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

SHA512_256

導入バージョン: v1.1

指定された文字列の SHA512_256 ハッシュ値を計算します。

構文

SHA512_256(s)

引数

  • s — ハッシュ化する入力文字列。String

返される値

指定された入力文字列の SHA512_256 ハッシュを固定長文字列として返します。FixedString(32)

使用例

SELECT HEX(SHA512_256('abc'));
┌─hex(SHA512_256('abc'))───────────────────────────────────────────┐
│ 53048E2681941EF99B2E29B76B4C7DABE4C2D0C634FC6D46E0E2F13107E7AF23 │
└──────────────────────────────────────────────────────────────────┘

URLHash

導入バージョン: v1.1

URL から取得した文字列に対して、何らかの正規化処理を行ったうえで適用する、高速かつ十分な品質を備えた非暗号学的ハッシュ関数です。

このハッシュ関数には 2 つのモードがあります:

ModeDescription
URLHash(url)末尾に存在する場合は、末尾の /?# のいずれか 1 文字を取り除いた文字列からハッシュを計算します。
URLHash(url, N)末尾に存在する場合は、末尾の /?# のいずれか 1 文字を取り除いたうえで、URL 階層の N レベル目までの文字列からハッシュを計算します。レベルの定義は URLHierarchy と同じです。

構文

URLHash(url[, N])

引数

  • url — ハッシュ化する URL 文字列。String
  • N — 省略可能。URL 階層内のレベル。(U)Int*

戻り値

url の算出されたハッシュ値を返します。UInt64

使用例

SELECT URLHash('https://www.clickhouse.com')
┌─URLHash('htt⋯house.com')─┐
│     13614512636072854701 │
└──────────────────────────┘

指定レベルでの URL のハッシュ

SELECT URLHash('https://www.clickhouse.com/docs', 0);
SELECT URLHash('https://www.clickhouse.com/docs', 1);
-- https://www.clickhouse.com のハッシュ
┌─URLHash('htt⋯m/docs', 0)─┐
│     13614512636072854701 │
└──────────────────────────┘
-- https://www.clickhouse.com/docs のハッシュ
┌─URLHash('htt⋯m/docs', 1)─┐
│     13167253331440520598 │
└──────────────────────────┘

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)) 型などに影響します。

構文

cityHash64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算する対象となる可変個数の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

呼び出し例

SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS CityHash, toTypeName(CityHash) AS type;
┌─────────────CityHash─┬─type───┐
│ 12072650598913549138 │ UInt64 │
└──────────────────────┴────────┘

行の順序も含めてテーブル全体のチェックサムを計算する

CREATE TABLE users (
    id UInt32,
    name String,
    age UInt8,
    city String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO users VALUES
(1, 'Alice', 25, 'New York'),
(2, 'Bob', 30, 'London'),
(3, 'Charlie', 35, 'Tokyo');

SELECT groupBitXor(cityHash64(*)) FROM users;
┌─groupBitXor(⋯age, city))─┐
│     11639977218258521182 │
└──────────────────────────┘

farmFingerprint64

導入バージョン: v20.12

Fingerprint64 メソッドを使用して 64 ビットの FarmHash 値を生成します。

ヒント

farmHash64 よりも安定かつ移植性の高い値が必要な場合は、farmFingerprint64 の使用を推奨します。

注記

計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して等しくなる場合があります。 これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、それに対応する Array(Tuple(key, value)) 型などが該当します。

構文

farmFingerprint64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する可変長の入力引数。Any

戻り値

入力引数から計算されたハッシュ値を返します。UInt64

使用例

SELECT farmFingerprint64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmFingerprint, toTypeName(FarmFingerprint) AS type;
┌─────FarmFingerprint─┬─type───┐
│ 5752020380710916328 │ UInt64 │
└─────────────────────┴────────┘

farmHash64

導入バージョン: v1.1

Hash64 メソッドを使用して 64 ビットの FarmHash を生成します。

ヒント

安定かつ移植性の高い値が必要な場合は farmFingerprint64 の使用を推奨します。

注記

計算されるハッシュ値は、異なる引数型であっても、同じ入力値に対して同一になる場合があります。 これは、たとえばサイズの異なる整数型、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と、それに対応する Array(Tuple(key, value)) 型などに影響します。

構文

farmHash64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算する任意個の入力引数。Any

戻り値

入力引数のハッシュ値を返します。UInt64

使用例

SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmHash, toTypeName(FarmHash) AS type;
┌─────────────FarmHash─┬─type───┐
│ 18125596431186471178 │ UInt64 │
└──────────────────────┴────────┘

gccMurmurHash

導入バージョン: v20.1

入力値に対して、GCC で使用されているものと同じシードを用いて、64ビットの MurmurHash2 ハッシュを計算します。

Clang と GCC のビルド間で同じ結果が得られます。

構文

gccMurmurHash(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する任意個の引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

使用例

SELECT
    gccMurmurHash(1, 2, 3) AS res1,
    gccMurmurHash(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2)))) AS res2
┌─────────────────res1─┬────────────────res2─┐
│ 12384823029245979431 │ 1188926775431157506 │
└──────────────────────┴─────────────────────┘

halfMD5

導入バージョン: v1.1

すべての入力パラメータを文字列として解釈し、それぞれに対して MD5 ハッシュ値を計算します。次に、それらのハッシュ値を連結し、得られた文字列のハッシュの先頭 8 バイトを取り出し、それをビッグエンディアンのバイト順で UInt64 として解釈します。この関数は比較的低速です(1 プロセッサコアあたり 1 秒間に 500 万件の短い文字列)。

代わりに sipHash64 関数の使用を検討してください。

この関数は可変数の入力パラメータを取ります。 引数には、サポートされている任意のデータ型を指定できます。 一部のデータ型では、引数の型が異なっていても(サイズの異なる整数、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と、同一データを持つ対応する Array(Tuple(key, value)) 型など)、同じ値に対してはハッシュ関数の計算結果が同じになる場合があります。

構文

halfMD5(arg1[, arg2, ..., argN])

引数

  • arg1[, arg2, ..., argN] — ハッシュを計算する可変個数の引数。Any

戻り値

指定した入力引数の half MD5 ハッシュ値を計算し、ビッグエンディアンのバイト順序で UInt64 として返します。UInt64

使用例

SELECT HEX(halfMD5('abc', 'cde', 'fgh'));
┌─hex(halfMD5('abc', 'cde', 'fgh'))─┐
│ 2C9506B7374CFAF4                  │
└───────────────────────────────────┘

hiveHash

導入バージョン: v20.1

文字列から「HiveHash」を計算します。 これは符号ビットをゼロクリアした JavaHash と同じです。 この関数は、バージョン 3.0 より前の Apache Hive で使用されています。

注記

このハッシュ関数は性能が高くありません。 すでに別のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。

構文

hiveHash(arg)

引数

  • arg — ハッシュ化する入力文字列。String

戻り値

入力文字列に対して計算された「hive hash」の値を返します。Int32

使用例

SELECT hiveHash('Hello, world!');
┌─hiveHash('Hello, world!')─┐
│                 267439093 │
└───────────────────────────┘

icebergHash

導入バージョン: v25.5

Iceberg の ハッシュ変換ロジックを実装します。

構文

icebergHash(value)

引数

返される値

32 ビットの Murmur3 ハッシュ(x86 バリアント、シード値 0)を表す Int32 型の値を返します。

使用例

SELECT icebergHash(1.0 :: Float32)
-142385009

intHash32

導入: v1.1

整数の 32 ビットハッシュ値を計算します。

このハッシュ関数は比較的高速ですが、暗号学的ハッシュ関数ではありません。

構文

intHash32(arg)

引数

  • arg — ハッシュ化する整数。(U)Int*

戻り値

入力整数の32ビットハッシュ値(UInt32)を返します。

使用例

SELECT intHash32(42);
┌─intHash32(42)─┐
│    1228623923 │
└───────────────┘

intHash64

導入バージョン: v1.1

整数の 64 ビットハッシュ値を計算します。

このハッシュ関数は比較的高速で(intHash32 よりも高速ですが)、暗号学的ハッシュ関数ではありません。

構文

intHash64(int)

引数

  • int — ハッシュ化する整数値。(U)Int*

戻り値

64ビットのハッシュコード。UInt64

使用例

SELECT intHash64(42);
┌────────intHash64(42)─┐
│ 11490350930367293593 │
└──────────────────────┘

javaHash

導入バージョン: v20.1

次の値から JavaHash を計算します:

注記

このハッシュ関数は効率が良くありません。 すでに別のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。

注記

Java は符号付き整数に対するハッシュの計算のみをサポートしています。 符号なし整数のハッシュを計算したい場合は、適切な符号付きの ClickHouse 型にキャストする必要があります。

構文

javaHash(arg)

引数

  • arg — ハッシュ計算の対象となる入力値。Any

戻り値

arg のハッシュ値を計算して返します。Int32

使用例 1

SELECT javaHash(toInt32(123));
┌─javaHash(toInt32(123))─┐
│               123      │
└────────────────────────┘

使用例2

SELECT javaHash('Hello, world!');
┌─javaHash('Hello, world!')─┐
│               -1880044555 │
└───────────────────────────┘

javaHashUTF16LE

導入バージョン: v20.1

UTF-16LE でエンコードされた文字列を表すバイト列が含まれていると仮定して、その文字列から JavaHash を計算します。

構文

javaHashUTF16LE(arg)

引数

  • arg — UTF-16LE でエンコードされた文字列。String

戻り値

UTF-16LE でエンコードされた文字列のハッシュ値を返します。Int32

使用例

SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'));
┌─javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))─┐
│                                                      3556498 │
└──────────────────────────────────────────────────────────────┘

jumpConsistentHash

導入バージョン: v1.1

整数に対してjump consistent hashを計算します。

構文

jumpConsistentHash(key, buckets)

引数

  • key — 入力キー。UInt64
  • buckets — バケット数。Int32

戻り値

計算されたハッシュ値を返します。Int32

使用例

SELECT jumpConsistentHash(256, 4)
┌─jumpConsistentHash(256, 4)─┐
│                          3 │
└────────────────────────────┘

kafkaMurmurHash

導入: v23.4

入力値の 32 ビット MurmurHash2 ハッシュ値を、Kafka で使用されているものと同じシードを用い、かつ最上位ビットを除外することで、Default Partitioner と互換性を持つように計算します。

構文

kafkaMurmurHash(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算するための可変個の引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt32

使用例

SELECT
    kafkaMurmurHash('foobar') AS res1,
    kafkaMurmurHash(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS res2
┌───────res1─┬─────res2─┐
│ 1357151166 │ 85479775 │
└────────────┴──────────┘

keccak256

導入されたバージョン: v25.4

指定された文字列の Keccak-256 暗号学的ハッシュ値を計算します。 このハッシュ関数はブロックチェーンアプリケーション、特に Ethereum で広く使用されています。

構文

keccak256(message)

引数

  • message — ハッシュ化する入力文字列。String

戻り値

入力文字列の 32 バイトの Keccak-256 ハッシュ値を固定長文字列として返します。FixedString(32)

使用例

SELECT hex(keccak256('hello'))
┌─hex(keccak256('hello'))──────────────────────────────────────────┐
│ 1C8AFF950685C2ED4BC3174F3472287B56D9517B9C948127319A09A7A36DEAC8 │
└──────────────────────────────────────────────────────────────────┘

kostikConsistentHash

導入バージョン: v22.6

Konstantin 'Kostik' Oblakov による、時間計算量および空間計算量がともに O(1) のコンシステントハッシュアルゴリズム。 n <= 32768 の場合にのみ効率的です。

構文

kostikConsistentHash(input, n)

別名: yandexConsistentHash

引数

  • input — 整数のキー。UInt64
  • n — バケット数。UInt16

戻り値

計算されたハッシュ値を返します。UInt16

使用例

SELECT kostikConsistentHash(16045690984833335023, 2);
┌─kostikConsistentHash(16045690984833335023, 2)─┐
│                                             1 │
└───────────────────────────────────────────────┘

metroHash64

導入バージョン: v1.1

64 ビットの MetroHash ハッシュ値を生成します。

注記

計算されるハッシュ値は、型が異なる引数であっても、同じ入力値に対して同一になる場合があります。 これは例えば、サイズの異なる整数型や、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と、それに対応する Array(Tuple(key, value)) 型などに影響します。

構文

metroHash64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算するための任意個の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

使用例

SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MetroHash, toTypeName(MetroHash) AS type;
┌────────────MetroHash─┬─type───┐
│ 14235658766382344533 │ UInt64 │
└──────────────────────┴────────┘

murmurHash2_32

導入バージョン: v18.5

入力値に対して MurmurHash2 ハッシュを計算します。

注記

異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が同一になる場合があります。 このことは、例えばサイズの異なる整数型、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と対応する Array(Tuple(key, value)) 型などに影響します。

構文

murmurHash2_32(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算する可変個の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt32

使用例

SELECT murmurHash2_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type;
┌─MurmurHash2─┬─type───┐
│  3681770635 │ UInt32 │
└─────────────┴────────┘

murmurHash2_64

導入バージョン: v18.10

入力値に対して MurmurHash2 ハッシュを計算します。

注記

同じ入力値に対しても、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map とそれに対応する Array(Tuple(key, value)) 型などが該当します。

構文

murmurHash2_64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する対象となる可変個の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

使用例

SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type;
┌──────────MurmurHash2─┬─type───┐
│ 11832096901709403633 │ UInt64 │
└──────────────────────┴────────┘

murmurHash3_128

導入バージョン: v18.10

入力値の 128 ビット MurmurHash3 ハッシュ値を計算します。

構文

murmurHash3_128(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する対象となる可変個数の入力引数。Any

戻り値

入力引数の 128 ビット MurmurHash3 ハッシュ値を返します。FixedString(16)

使用例

SELECT hex(murmurHash3_128('foo', 'foo', 'foo'));
┌─hex(murmurHash3_128('foo', 'foo', 'foo'))─┐
│ F8F7AD9B6CD4CF117A71E277E2EC2931          │
└───────────────────────────────────────────┘

murmurHash3_32

導入: v18.10

MurmurHash3 のハッシュ値を生成します。

注記

計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同一になる場合があります。 例えば、サイズの異なる整数型、同一データを持つ名前付きおよび非名前付きの Tuple、同一データを持つ Map とそれに対応する Array(Tuple(key, value)) 型などが該当します。

構文

murmurHash3_32(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算する対象となる可変個数の入力引数。Any

戻り値

入力引数から計算されたハッシュ値を返します。UInt32

使用例

SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type;
┌─MurmurHash3─┬─type───┐
│     2152717 │ UInt32 │
└─────────────┴────────┘

murmurHash3_64

導入: v18.10

入力値に対して MurmurHash3 ハッシュを計算します。

注記

同じ入力値であっても、引数の型が異なる場合に計算されるハッシュ値が同一になることがあります。 これは、たとえばサイズの異なる整数型、同じデータを持つ名前付き/名前なしの Tuple、同じデータを持つ Map 型および対応する Array(Tuple(key, value)) 型などに該当します。

構文

murmurHash3_64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュ値を計算するための任意個数の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

使用例

SELECT murmurHash3_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type;
┌──────────MurmurHash3─┬─type───┐
│ 11832096901709403633 │ UInt64 │
└──────────────────────┴────────┘

ngramMinHash

導入バージョン: v21.1

ASCII 文字列を、ngramsize 個の文字からなる n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュ値を要素とするタプルを返します。 hashnum 個の最小ハッシュを用いて最小ハッシュを計算し、hashnum 個の最大ハッシュを用いて最大ハッシュを計算します。 大文字と小文字は区別されます。

tupleHammingDistance を使用して、類似した文字列を検出するために利用できます。 2 つの文字列に対して、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一です。

構文

ngramMinHash(string[, ngramsize, hashnum])

引数

  • string — ハッシュ値を計算する対象の文字列。String
  • ngramsize — 省略可能。n-gram のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用する最小ハッシュおよび最大ハッシュの個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

最小値と最大値、2 つのハッシュ値からなるタプルを返します。Tuple

使用例

SELECT ngramMinHash('ClickHouse') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,9054248444481805918) │
└────────────────────────────────────────────┘

ngramMinHashArg

導入バージョン: v21.1

ASCII 文字列を ngramsize 文字からなる N-グラムに分割し、同じ入力に対して ngramMinHash 関数で計算されるハッシュ値のうち、最小値と最大値を持つ N-グラムを返します。 大文字と小文字を区別します。

構文

ngramMinHashArg(string[, ngramsize, hashnum])

引数

  • string — ハッシュ値を計算する対象の文字列。String
  • ngramsize — 省略可。n-gram のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果を計算する際に使用される最小ハッシュ数および最大ハッシュ数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

hashnum 個の n-gram を持つ 2 つのタプルから成るタプルを返します。Tuple(String)

使用例

SELECT ngramMinHashArg('ClickHouse') AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('Hou','lic','ick','ous','ckH','Cli')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgCaseInsensitive

導入バージョン: v21.1

ASCII 文字列を ngramsize 文字からなる n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitive 関数で計算される、ハッシュ値が最小の n-gram と最大の n-gram を返します。 大文字小文字は区別されません。

構文

ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • ngramsize — 省略可。n-グラムのサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

hashnum 個の n-グラムを持つ 2 つのタプルから成るタプルを返します。Tuple(Tuple(String))

使用例

SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','kHo','use','Cli'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgCaseInsensitiveUTF8

導入バージョン: v21.1

UTF-8 文字列を、ngramsize 文字からなる n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitiveUTF8 関数で計算されるハッシュ値が最小および最大の n-gram を返します。 大文字と小文字は区別されません。

構文

ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum])

引数

  • string — ハッシュ値を計算する対象の文字列。String
  • ngramsize — 省略可。n-gram のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果を計算する際に使用する最小ハッシュおよび最大ハッシュの個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

それぞれに hashnum 個の n-gram を含む 2 つのタプルから成るタプルを返します。Tuple(Tuple(String))

使用例

SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ckH','ous','ick','lic','kHo','use'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgUTF8

導入バージョン: v21.1

UTF-8 文字列を ngramsize 文字から成る N グラムに分割し、同じ入力に対して ngramMinHashUTF8 関数で計算されるハッシュ値が最小および最大となる N グラムを返します。 大文字と小文字は区別されます。

構文

ngramMinHashArgUTF8(string[, ngramsize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • ngramsize — 省略可。n-gram のサイズ。1 から 25 までの任意の数値。デフォルトは 3UInt8
  • hashnum — 省略可。結果の計算に使用される最小および最大ハッシュの数。1 から 25 までの任意の数値。デフォルトは 6UInt8

戻り値

hashnum 個の n-gram を持つ 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))

使用例

SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('kHo','Hou','lic','ick','ous','ckH')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashCaseInsensitive

導入バージョン: v21.1

ASCII文字列を ngramsize 文字の n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュを含むタプルを返します。 hashnum 個の最小ハッシュを用いて最小ハッシュを計算し、hashnum 個の最大ハッシュを用いて最大ハッシュを計算します。 大文字小文字は区別しません。

tupleHammingDistance を使って、準重複文字列を検出するために利用できます。 2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなせます。

構文

ngramMinHashCaseInsensitive(string[, ngramsize, hashnum])

引数

  • string — 文字列。String。- ngramsize — n-gram のサイズ。省略可能。許容値: 1 から 25 までの任意の整数値。デフォルト値: 3UInt8。- hashnum — 結果を計算する際に使用する、最小ハッシュおよび最大ハッシュの数。省略可能。許容値: 1 から 25 までの任意の整数値。デフォルト値: 6UInt8

戻り値

2 つのハッシュ(最小値と最大値)を含むタプル。Tuple(UInt64, UInt64)。Tuple

使用例

SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (2106263556442004574,13203602793651726206) │
└────────────────────────────────────────────┘

ngramMinHashCaseInsensitiveUTF8

導入バージョン: v21.1

UTF-8 文字列を ngramsize 個の文字からなる n-gram に分割し、それぞれの n-gram に対してハッシュ値を計算し、それらのハッシュを要素とするタプルを返します。 hashnum 個の最小ハッシュを使って最小ハッシュを計算し、hashnum 個の最大ハッシュを使って最大ハッシュを計算します。 大文字・小文字は区別しません。

tupleHammingDistance を用いて、部分的に重複した(セミ重複)文字列を検出するために使用できます。 2 つの文字列に対して、返されるハッシュが同じであれば、それらの文字列は同一と見なされます。

構文

ngramMinHashCaseInsensitiveUTF8(文字列 [, nグラムサイズ, ハッシュ数])

引数

  • string — ハッシュを計算する対象の文字列。String
  • ngramsize — 省略可能。N-gram のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用するハッシュ値の最小個数および最大個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

返される値

最小値と最大値の 2 つのハッシュを要素として含むタプルを返します。Tuple

使用例

SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple;
┌─Tuple───────────────────────────────────────┐
│ (12493625717655877135,13203602793651726206) │
└─────────────────────────────────────────────┘

ngramMinHashUTF8

導入バージョン: v21.1

UTF-8 文字列を ngramsize 文字の n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュからなるタプルを返します。 hashnum 個の最小ハッシュ値を用いて最小ハッシュを計算し、hashnum 個の最大ハッシュ値を用いて最大ハッシュを計算します。 大文字と小文字は区別されます。

tupleHammingDistance を使って、部分的に重複した文字列を検出するために使用できます。 2 つの文字列について、返されるハッシュが両方で同じであれば、それらの文字列は同一です。

構文

ngramMinHashUTF8(string[, ngramsize, hashnum])

引数

  • string — ハッシュ値を計算する対象の文字列。String
  • ngramsize — 省略可能。N-gram のサイズ。1 から 25 の任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用する最小および最大ハッシュの数。1 から 25 の任意の数値。デフォルト値は 6UInt8

戻り値

2 つのハッシュ(最小値と最大値)を要素とするタプルを返します。Tuple

使用例

SELECT ngramMinHashUTF8('ClickHouse') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,6742163577938632877) │
└────────────────────────────────────────────┘

ngramSimHash

導入バージョン: v21.1

ASCII 文字列を、長さ ngramsize の記号からなる n-gram に分割し、その n-gram の simhash を返します。

bitHammingDistance と組み合わせて、部分的に重複した文字列の検出に使用できます。 2 つの文字列について計算された simhashes 間のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

ngramSimHash(string[, ngramsize])

引数

  • string — 大文字・小文字を区別して simhash を計算する対象の文字列。String
  • ngramsize — 省略可能。n-gram のサイズで、1 から 25 までの任意の数値。既定値は 3UInt8

戻り値

入力文字列のハッシュ値を返します。UInt64

使用例

SELECT ngramSimHash('ClickHouse') AS Hash;
┌───────Hash─┐
│ 1627567969 │
└────────────┘

ngramSimHashCaseInsensitive

導入バージョン: v21.1

ASCII 文字列を、ngramsize 文字からなる n-gram に分割し、n-gram の simhash を返します。 大文字と小文字を区別しません。

bitHammingDistance と組み合わせて、重複に近い文字列の検出に使用できます。 2 つの文字列について計算した simhashハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

ngramSimHashCaseInsensitive(string[, ngramsize])

引数

  • string — 大文字小文字を区別せずに simhash を計算する対象の文字列。String
  • ngramsize — 省略可能。n-gram のサイズで、1 から 25 までの任意の数値。デフォルト値は 3UInt8

戻り値

ハッシュ値。UInt64UInt64

使用例

SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash;
┌──────Hash─┐
│ 562180645 │
└───────────┘

ngramSimHashCaseInsensitiveUTF8

導入バージョン: v21.1

UTF-8 文字列を ngramsize 個の文字からなる n-gram に分割し、n-gram の simhash を返します。 大文字と小文字を区別しません。

bitHammingDistance と組み合わせて、重複度の高い文字列の検出に使用できます。2 つの文字列について計算された simhash 値同士の Hamming Distance が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

ngramSimHashCaseInsensitiveUTF8(string[, ngramsize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • ngramsize — 省略可能。n-gram のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8

戻り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash;
┌───────Hash─┐
│ 1636742693 │
└────────────┘

ngramSimHashUTF8

導入バージョン: v21.1

UTF-8 エンコードされた文字列を ngramsize 個の文字からなる n-gram に分割し、その n-gram の simhash を返します。 大文字と小文字を区別します。

bitHammingDistance と組み合わせて、部分的に重複した文字列の検出に使用できます。 2 つの文字列について計算された simhashesハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

ngramSimHashUTF8(string[, ngramsize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • ngramsize — 省略可能。n-gram のサイズで、1 から 25 までの任意の数値。デフォルト値は 3UInt8

戻り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT ngramSimHashUTF8('ClickHouse') AS Hash;
┌───────Hash─┐
│ 1628157797 │
└────────────┘

sipHash128

導入バージョン: v1.1

sipHash64 に似ていますが、128 ビットのハッシュ値を生成します。つまり、最終的な XOR フォールディング処理が 128 ビットまで行われます。

新規プロジェクトでは sipHash128Reference を使用する

この 128 ビット版はリファレンス実装と異なり、安全性がより低い実装です。 このバージョンが存在するのは、作成当時 SipHash の公式な 128 ビット拡張が存在しなかったためです。 新規プロジェクトでは sipHash128Reference の使用を推奨します。

構文

sipHash128(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する任意個の入力引数。Any

戻り値

128ビットの SipHash ハッシュ値を返します。FixedString(16)

使用例

SELECT hex(sipHash128('foo', '\x01', 3));
┌─hex(sipHash128('foo', '', 3))────┐
│ 9DE516A64A414D4B1B609415E4523F24 │
└──────────────────────────────────┘

sipHash128Keyed

導入バージョン: v23.2

sipHash128 と同じですが、固定キーを使う代わりに明示的なキー引数を追加で受け取ります。

新しいプロジェクトでは sipHash128ReferenceKeyed を使用してください

この 128 ビット版はリファレンス実装とは異なり、より弱くなっています。 このバージョンが存在するのは、これが実装された当時、SipHash には公式な 128 ビット拡張が存在しなかったためです。 新しいプロジェクトでは sipHash128ReferenceKeyed の使用が推奨されます。

構文

sipHash128Keyed((k0, k1), [arg1, arg2, ...])

引数

  • (k0, k1) — キーを表す 2 つの UInt64 値からなるタプル。Tuple(UInt64, UInt64)
  • arg1[, arg2, ...] — ハッシュを計算するための任意個数の入力引数。Any

戻り値

FixedString(16) の 128 ビットの SipHash ハッシュ値。FixedString(16)

使用例

SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x01', 3));
┌─hex(sipHash128Keyed((506097522914230528, 1084818905618843912), 'foo', '', 3))─┐
│ B8467F65C8B4CFD9A5F8BD733917D9BF                                              │
└───────────────────────────────────────────────────────────────────────────────┘

sipHash128Reference

導入バージョン: v23.2

sipHash128 と同様ですが、SipHash の原著者による 128 ビットアルゴリズムを実装しています。

構文

sipHash128Reference(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — ハッシュを計算する対象となる可変個の入力引数。Any

戻り値

入力引数に対して計算された 128 ビットの SipHash ハッシュ値を返します。FixedString(16)

使用例

SELECT hex(sipHash128Reference('foo', '', 3));
┌─hex(sipHash128Reference('foo', '', 3))─┐
│ 4D1BE1A22D7F5933C0873E1698426260       │
└────────────────────────────────────────┘

sipHash128ReferenceKeyed

導入バージョン: v23.2

sipHash128Reference と同様ですが、固定キーを使用する代わりに、明示的なキー引数を取ります。

構文

sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...])

引数

  • (k0, k1) — キーを表す 2 つの値からなるタプル。Tuple(UInt64, UInt64)
  • arg1[, arg2, ...] — ハッシュを計算する対象となる可変個数の入力引数。Any

戻り値

入力引数に対して計算された 128 ビットの SipHash ハッシュ値を返します。FixedString(16)

使用例

SELECT hex(sipHash128Reference('foo', '', 3));
┌─hex(sipHash128Reference('foo', '', 3))─┐
│ 4D1BE1A22D7F5933C0873E1698426260       │
└────────────────────────────────────────┘

sipHash64

導入バージョン: v1.1

64 ビットの SipHash ハッシュ値を生成します。

これは暗号学的ハッシュ関数です。MD5 ハッシュ関数より少なくとも 3 倍高速で動作します。

この関数は、すべての入力パラメータを文字列として解釈し、それぞれについてハッシュ値を計算します。 その後、以下のアルゴリズムでそれらのハッシュ値を結合します:

  1. 1 番目と 2 番目のハッシュ値を連結して配列を作成し、それをハッシュします。
  2. 直前に計算したハッシュ値と 3 番目の入力パラメータのハッシュ値を、同様の方法でハッシュします。
  3. この計算を、元の入力に対応する残りすべてのハッシュ値に対して繰り返します。
注記

同じ入力値でも、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と、それに対応する Array(Tuple(key, value)) 型などに影響します。

構文

sipHash64(arg1[, arg2, ...])

引数

  • arg1[, arg2, ...] — 可変個数の入力引数。Any

戻り値

入力引数に対して計算されたハッシュ値を返します。UInt64

使用例

SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS SipHash, toTypeName(SipHash) AS type;
┌──────────────SipHash─┬─type───┐
│ 11400366955626497465 │ UInt64 │
└──────────────────────┴────────┘

sipHash64Keyed

導入バージョン: v23.2

sipHash64 と同様ですが、固定キーではなく、明示的に指定したキー引数を取ります。

構文

sipHash64Keyed((k0, k1), arg1[,arg2, ...])

引数

  • (k0, k1) — キーを表す 2 つの値のタプル。Tuple(UInt64, UInt64)
  • arg1[,arg2, ...] — 可変個の入力引数。Any

返り値

入力値から計算されたハッシュ値を返します。UInt64

使用例

SELECT sipHash64Keyed((506097522914230528, 1084818905618843912), array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS SipHash, toTypeName(SipHash) AS type;
┌─────────────SipHash─┬─type───┐
│ 8017656310194184311 │ UInt64 │
└─────────────────────┴────────┘

wordShingleMinHash

導入バージョン: v21.1

ASCII 文字列を shinglesize 語からなる部分列(シングル)に分割し、各シングルごとにハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。 最小ハッシュの計算には hashnum 個の最小ハッシュを、最大ハッシュの計算には hashnum 個の最大ハッシュを使用します。 大文字と小文字は区別されます。

tupleHammingDistance を使って、準重複文字列を検出するために利用できます。 2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一であるとみなせます。

構文

wordShingleMinHash(string[, shinglesize, hashnum])

引数

  • string — ハッシュ値を計算する対象の文字列。String
  • shinglesize — 省略可能。ワードシングル(shingle)のサイズ。1 から 25 の範囲の任意の整数。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。1 から 25 の範囲の任意の整数。デフォルト値は 6UInt8

戻り値

2 つのハッシュ値(最小値と最大値)を要素とするタプルを返します。Tuple(UInt64, UInt64)

使用例

SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘

wordShingleMinHashArg

導入バージョン: v1.1

ASCII 文字列を shinglesize 語ごとの部分(シングル)に分割し、同じ入力を用いて wordShingleMinHash 関数で計算される単語ハッシュの最小値および最大値を持つシングルを返します。 ケースセンシティブです。

構文

wordShingleMinHashArg(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可能。ワードシングル(word shingle)のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用する最小ハッシュと最大ハッシュの個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

hashnum 個のワードシングルを含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))

使用例

SELECT wordShingleMinHashArg('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgCaseInsensitive

導入バージョン: v21.1

ASCII文字列を、shinglesize 個の単語からなる部分(シングル)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitive 関数で計算される、単語ハッシュが最小および最大となるシングルを返します。 大文字と小文字は区別されません。

構文

wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可能。ワードシングルのサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

hashnum 個のワードシングルをそれぞれ含む 2 つのタプルからなるタプルを返します。Tuple(Tuple(String))

使用例

SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple;
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgCaseInsensitiveUTF8

導入バージョン: v21.1

UTF-8 文字列を shinglesize 語ずつの部分(シングル)に分割し、同じ入力に対して wordShingleMinHashCaseInsensitiveUTF8 関数で計算される単語ハッシュの最小値および最大値に対応するシングルを返します。 大文字小文字は区別されません。

構文

wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可。ワードシングル(shingle)のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果の計算に使用される最小および最大ハッシュの個数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

それぞれが hashnum 個のワードシングルを持つ 2 つのタプルから構成されるタプルを返します。Tuple(Tuple(String))

使用例

SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple;
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgUTF8

導入バージョン: v21.1

UTF-8 文字列を shinglesize 語ごとの部分(shingle)に分割し、同じ入力に対して wordShingleMinHashUTF8 関数で計算される、単語ハッシュ値が最小および最大の shingle を返します。 大文字と小文字は区別されます。

構文

wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可。ワードシングル(shingle)のサイズ。1 から 25 までの任意の値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。1 から 25 までの任意の値。デフォルト値は 6UInt8

戻り値

hashnum 個のワードシングルをそれぞれ含む 2 つのタプルから成るタプルを返します。Tuple(Tuple(String))

使用例

SELECT wordShingleMinHashArgUTF8('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashCaseInsensitive

導入バージョン: v21.1

ASCII 文字列を shinglesize 語からなる部分(シングル)に分割し、各ワードシングルのハッシュ値を計算して、そのハッシュを要素とするタプルを返します。 hashnum 個の最小ハッシュを使用して最小ハッシュを計算し、hashnum 個の最大ハッシュを使用して最大ハッシュを計算します。 大文字小文字は区別されません。

tupleHammingDistance と組み合わせて、準重複文字列を検出するために利用できます。 2つの文字列について、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一であると見なせます。

構文

wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — オプション。ワードシングル(shingle)のサイズ。1 から 25 までの任意の値。デフォルト値は 3UInt8
  • hashnum — オプション。結果を計算するために使用される最小ハッシュと最大ハッシュの数。1 から 25 までの任意の値。デフォルト値は 6UInt8

返される値

2 つのハッシュ(最小値と最大値)を要素に持つタプルを返します。Tuple(UInt64, UInt64)

使用例

SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘

wordShingleMinHashCaseInsensitiveUTF8

導入バージョン: v21.1

UTF-8 文字列を shinglesize 語からなるシングル(shingle)に分割し、各シングルのハッシュ値を計算して、そのハッシュを要素とするタプルを返します。 最小ハッシュ値を計算するために hashnum 個のハッシュを、最大ハッシュ値を計算するために hashnum 個のハッシュを使用します。 大文字小文字は区別しません。

tupleHammingDistance を使って、類似した文字列を検出するために使用できます。 2 つの文字列に対して、返されるハッシュが両方で同じであれば、その文字列は同一であるとみなせます。

構文

wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可。ワードシングル(shingle)のサイズ。1 から 25 までの任意の整数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果を計算するために使用される最小ハッシュおよび最大ハッシュの個数。1 から 25 までの任意の整数値。デフォルト値は 6UInt8

戻り値

最小値と最大値の 2 つのハッシュを要素とするタプルを返します。Tuple(UInt64, UInt64)

使用例

SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Tuple;
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘

wordShingleMinHashUTF8

導入バージョン: v21.1

UTF-8 文字列を、shinglesize 個の単語から成る部分列(シングル, shingle)に分割し、各単語シングルのハッシュ値を計算して、これらのハッシュを要素とするタプルを返します。 hashnum 個の最小ハッシュを使って最小ハッシュを計算し、hashnum 個の最大ハッシュを使って最大ハッシュを計算します。 大文字と小文字は区別されます。

tupleHammingDistance を用いて準重複文字列を検出するために利用できます。 2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなされます。

構文

wordShingleMinHashUTF8(string[, shinglesize, hashnum])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可。単語シングル(shingle)のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8
  • hashnum — 省略可。結果の計算に使用する最小ハッシュと最大ハッシュの数。1 から 25 までの任意の数値。デフォルト値は 6UInt8

戻り値

2 つのハッシュ(最小値と最大値)を含むタプルを返します。Tuple(UInt64, UInt64)

使用例

SELECT wordShingleMinHashUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘

wordShingleSimHash

導入バージョン: v21.1

ASCII 文字列を shinglesize 語から成る部分(ワードシングル)に分割し、そのワードシングルの simhash を返します。 大文字と小文字は区別されます。

bitHammingDistance と組み合わせて、部分的に重複した文字列の検出に使用できます。 2 つの文字列について計算された simhashesハミング距離が小さいほど、これらの文字列が同一または非常に類似している可能性が高くなります。

構文

wordShingleSimHash(string[, shinglesize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可。ワードシングル(連続する単語列)のサイズ。1 から 25 の任意の数値。既定値は 3UInt8

戻り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT wordShingleSimHash('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。') AS Hash;
┌───────Hash─┐
│ 2328277067 │
└────────────┘

wordShingleSimHashCaseInsensitive

導入バージョン: v21.1

ASCII 文字列を shinglesize 語からなる部分文字列(シングル)に分割し、その単語シングルの simhash を返します。 大文字小文字は区別されません。

bitHammingDistance を用いた、ほぼ重複した文字列の検出に使用できます。 2 つの文字列について計算された simhash 同士のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

wordShingleSimHashCaseInsensitive(string[, shinglesize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可能。ワードシングル(shingle)のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8

戻り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT wordShingleSimHashCaseInsensitive('ClickHouse®は、オンライン分析処理(OLAP)クエリのためのカラム指向データベース管理システム(DBMS)です。') AS Hash;
┌───────Hash─┐
│ 2194812424 │
└────────────┘

wordShingleSimHashCaseInsensitiveUTF8

導入バージョン: v1.1

UTF-8 エンコードされた文字列を、shinglesize 語から成るシングル(shingle)に分割し、その単語シングルの simhash を返します。 大文字・小文字は区別されません。

bitHammingDistance を使用して、類似した重複文字列の検出に利用できます。 2 つの文字列から計算された simhashesハミング距離 が小さいほど、それらの文字列が同じである可能性が高くなります。

構文

wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可能。ワードシングル(shingle)のサイズ。1 から 25 までの任意の整数。デフォルト値は 3UInt8

返り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Hash;
┌───────Hash─┐
│ 2194812424 │
└────────────┘

wordShingleSimHashUTF8

導入バージョン: v21.1

UTF-8 文字列を、shinglesize 語から成る連続した部分列(シングル、shingle)に分割し、語シングル(word shingle)の simhash 値を返します。 大文字と小文字を区別します。

bitHammingDistance と組み合わせて、近似重複文字列を検出するために使用できます。 2 つの文字列について計算された simhash 値のハミング距離が小さいほど、それらの文字列が同一である可能性が高くなります。

構文

wordShingleSimHashUTF8(string[, shinglesize])

引数

  • string — ハッシュを計算する対象の文字列。String
  • shinglesize — 省略可能。単語シングル(shingle)のサイズ。1 から 25 までの任意の数値。デフォルト値は 3UInt8

戻り値

計算されたハッシュ値を返します。UInt64

使用例

SELECT wordShingleSimHashUTF8('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。') AS Hash;
┌───────Hash─┐
│ 2328277067 │
└────────────┘

wyHash64

導入バージョン: v22.7

64ビットの wyHash64 ハッシュ値を計算します。

構文

wyHash64(arg)

引数

  • arg — ハッシュを計算する対象となる文字列引数。String

戻り値

計算された 64 ビットのハッシュ値を返します。UInt64

使用例

SELECT wyHash64('ClickHouse') AS Hash;
12336419557878201794

xxHash32

導入バージョン: v20.1

文字列に対する xxHash を計算します。

64ビット版については xxHash64 を参照してください。

構文

xxHash32(arg)

引数

  • arg — ハッシュ化する対象の入力文字列。String

返り値

入力文字列の 32 ビットハッシュ値を返します。UInt32

使用例

SELECT xxHash32('Hello, world!');
┌─xxHash32('Hello, world!')─┐
│                 834093149 │
└───────────────────────────┘

xxHash64

導入: v20.1

文字列に対する xxHash を計算します。

32 ビット版については xxHash32 を参照してください。

構文

xxHash64(arg)

引数

  • arg — ハッシュ化する入力文字列。String

戻り値

入力文字列に対して計算された 64 ビットのハッシュ値を返します。UInt64

使用例

SELECT xxHash64('Hello, world!');
┌─xxHash64('Hello, world!')─┐
│      17691043854468224118 │
└───────────────────────────┘

xxh3

導入バージョン: v22.12

XXH3 の 64 ビットハッシュ値を計算します。

構文

xxh3(expr)

引数

  • expr — 任意のデータ型の式からなるリスト。Any

戻り値

計算された64ビットの xxh3 ハッシュ値を返します。UInt64

使用例

SELECT xxh3('ClickHouse')
18009318874338624809