73 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/ja/sql-reference/functions/hash-functions | 85 | Hash |
ハッシュ関数
ハッシュ関数は、要素の決定的な擬似ランダムシャッフルに使用できます。
Simhashは、類似した引数に対して近いハッシュ値を返すハッシュ関数です。
halfMD5
すべての入力パラメータを文字列として解釈し、それぞれに対してMD5ハッシュ値を計算します。その後、ハッシュを結合し、結果の文字列のハッシュの最初の8バイトを取り出して、ビッグエンディアンバイトオーダーでUInt64
として解釈します。
halfMD5(par1, ...)
この関数は比較的遅いです(1秒あたり500万の短い文字列をプロセッサコアごとに処理します)。 代わりにsipHash64関数の使用を検討してください。
引数
この関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、対応するデータを持つMap
およびArray(Tuple(key, value))
型など)。
返される値
UInt64データ型のハッシュ値。
例
SELECT halfMD5(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS halfMD5hash, toTypeName(halfMD5hash) AS type;
┌────────halfMD5hash─┬─type───┐
│ 186182704141653334 │ UInt64 │
└────────────────────┴────────┘
MD4
文字列からMD4を計算し、結果のバイトセットをFixedString(16)として返します。
MD5
文字列からMD5を計算し、結果のバイトセットをFixedString(16)として返します。 特定のMD5が必要でない場合、暗号化的に確かな128ビットハッシュが必要な場合には、代わりに‘sipHash128’関数を使用してください。 md5sumユーティリティと同じ結果を得たい場合は、lower(hex(MD5(s)))を使用してください。
RIPEMD160
RIPEMD-160ハッシュ値を生成します。
構文
RIPEMD160(input)
パラメータ
input
: 入力文字列。String
返される値
- 160ビットの
RIPEMD-160
ハッシュ値、FixedString(20)型。
例
結果を16進エンコードされた文字列として表すには、hex関数を使用します。
クエリ:
SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'));
┌─HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))─┐
│ 37F332F68DB77BD9D7EDD4969571AD671CF9DD3B │
└───────────────────────────────────────────────────────────────┘
sipHash64
64ビットのSipHashハッシュ値を生成します。
sipHash64(par1,...)
これは暗号化ハッシュ関数です。少なくともMD5ハッシュ関数の3倍の速さで動作します。
この関数はすべての入力パラメータを文字列として解釈し、各パラメータごとにハッシュ値を計算します。次に、以下のアルゴリズムでハッシュを結合します。
- 最初と二番目のハッシュ値を連結し、結果をハッシュします。
- 前回計算されたハッシュ値と第三の入力パラメータのハッシュを同様にハッシュします。
- この計算を元の入力の残りのすべてのハッシュ値に対して繰り返します。
引数
この関数は任意のサポートされているデータ型の可変数の入力パラメータを取ります。
返される値
UInt64データ型のハッシュ値。
同じ入力値でも異なる引数型の場合、計算されるハッシュ値が等しい場合があることに注意してください。例えば、異なるサイズの整数、同じデータを持つ名前あり・なしのTuple
、同じデータを持つMap
と対応するArray(Tuple(key, value))
型です。
例
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
sipHash64と同様ですが、固定キーを使う代わりに明示的なキー引数を追加で取ります。
構文
sipHash64Keyed((k0, k1), par1,...)
引数
sipHash64と同様ですが、最初の引数はキーを表す二つのUInt64
値のタプルです。
返される値
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 │
└─────────────────────┴────────┘
sipHash128
sipHash64と同様ですが、128ビットのハッシュ値を生成します。最終的なxor折りたたみ状態は128ビットまで実行されます。
:::note この128ビットのバリアントはリファレンス実装とは異なり、弱いです。 これは、書かれた当時、SipHashの公式な128ビット拡張が存在しなかったためです。 新しいプロジェクトではおそらくsipHash128Referenceを使用すべきです。 :::
構文
sipHash128(par1,...)
引数
sipHash64と同様。
返される値
128ビットのSipHash
ハッシュ値。FixedString(16)型。
例
クエリ:
SELECT hex(sipHash128('foo', '\x01', 3));
結果:
┌─hex(sipHash128('foo', '', 3))────┐
│ 9DE516A64A414D4B1B609415E4523F24 │
└──────────────────────────────────┘
sipHash128Keyed
sipHash128と同様ですが、固定キーを使用する代わりに明示的なキー引数を追加で取ります。
:::note この128ビットのバリアントはリファレンス実装とは異なり、弱いです。 これは、書かれた当時、SipHashの公式な128ビット拡張が存在しなかったためです。 新しいプロジェクトではおそらくsipHash128ReferenceKeyedを使用すべきです。 :::
構文
sipHash128Keyed((k0, k1), par1,...)
引数
sipHash128と同様ですが、最初の引数はキーを表す二つのUInt64
値のタプルです。
返される値
128ビットのSipHash
ハッシュ値。FixedString(16)型。
例
クエリ:
SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x01', 3));
結果:
┌─hex(sipHash128Keyed((506097522914230528, 1084818905618843912), 'foo', '', 3))─┐
│ B8467F65C8B4CFD9A5F8BD733917D9BF │
└───────────────────────────────────────────────────────────────────────────────┘
sipHash128Reference
sipHash128と同様ですが、SipHashのオリジナル作者による128ビットアルゴリズムを実装しています。
構文
sipHash128Reference(par1,...)
引数
sipHash128と同様。
返される値
128ビットのSipHash
ハッシュ値。FixedString(16)型。
例
クエリ:
SELECT hex(sipHash128Reference('foo', '\x01', 3));
結果:
┌─hex(sipHash128Reference('foo', '', 3))─┐
│ 4D1BE1A22D7F5933C0873E1698426260 │
└────────────────────────────────────────┘
sipHash128ReferenceKeyed
sipHash128Referenceと同様ですが、固定キーを使用する代わりに明示的なキー引数を追加で取ります。
構文
sipHash128ReferenceKeyed((k0, k1), par1,...)
引数
sipHash128Referenceと同様ですが、最初の引数はキーを表す二つのUInt64
値のタプルです。
返される値
128ビットのSipHash
ハッシュ値。FixedString(16)型。
例
クエリ:
SELECT hex(sipHash128ReferenceKeyed((506097522914230528, 1084818905618843912),'foo', '\x01', 3));
結果:
┌─hex(sipHash128ReferenceKeyed((506097522914230528, 1084818905618843912), 'foo', '', 3))─┐
│ 630133C9722DC08646156B8130C4CDC8 │
└────────────────────────────────────────────────────────────────────────────────────────┘
cityHash64
64ビットのCityHashハッシュ値を生成します。
cityHash64(par1,...)
これは高速な非暗号化ハッシュ関数です。文字列パラメータにはCityHashアルゴリズムを使用し、他のデータ型のパラメータには実装固有の高速非暗号化ハッシュ関数を使用します。この関数はCityHashのコンビネータを使用して最終結果を得ます。
GoogleがCityHashのアルゴリズムをClickHouseに追加された後に変更したことに注意してください。つまり、ClickHouseのcityHash64とGoogleの上流のCityHashは異なる結果を生成します。ClickHouseのcityHash64はCityHash v1.0.2に対応しています。
引数
この関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、同じデータを持つMap
および対応するArray(Tuple(key, value))
型)。
返される値
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 │
└──────────────────────┴────────┘
次の例は、行順序までの精度でテーブル全体のチェックサムを計算する方法を示しています:
SELECT groupBitXor(cityHash64(*)) FROM table
intHash32
任意の型の整数から32ビットのハッシュコードを計算します。 これは、数値用の平均的な品質の高速な非暗号化ハッシュ関数です。
構文
intHash32(int)
引数
int
— ハッシュ化する整数。(U)Int*。
返される値
- 32ビットのハッシュコード。UInt32。
例
クエリ:
SELECT intHash32(42);
結果:
┌─intHash32(42)─┐
│ 1228623923 │
└───────────────┘
intHash64
任意の型の整数から64ビットのハッシュコードを計算します。 これは、数値用の平均的な品質の高速な非暗号化ハッシュ関数です。 intHash32よりも高速に動作します。
構文
intHash64(int)
引数
int
— ハッシュ化する整数。(U)Int*。
返される値
- 64ビットのハッシュコード。UInt64。
例
クエリ:
SELECT intHash64(42);
結果:
┌────────intHash64(42)─┐
│ 11490350930367293593 │
└──────────────────────┘
SHA1, SHA224, SHA256, SHA512, SHA512_256
文字列からSHA-1, SHA-224, SHA-256, SHA-512, SHA-512-256のハッシュを計算し、結果のバイトセットをFixedStringとして返します。
構文
SHA1('s')
...
SHA512('s')
この関数は比較的遅いです(SHA-1は1秒あたり500万の短い文字列をプロセッサコアごとに処理し、SHA-224とSHA-256は約220万を処理します)。 この関数を使用するのは、特定のハッシュ関数が必要であり、選択ができない場合のみをお勧めします。 このような場合でも、テーブルに挿入する際にオフラインで関数を適用し、値を事前に計算することをお勧めします。
引数
s
— SHAハッシュ計算のための入力文字列。String。
返される値
- SHAハッシュを16進数非エンコードされたFixedStringとして返します。SHA-1はFixedString(20)として、SHA-224はFixedString(28)、SHA-256はFixedString(32)、SHA-512はFixedString(64)です。FixedString。
例
結果を16進エンコードされた文字列として表すには、hex関数を使用します。
クエリ:
SELECT hex(SHA1('abc'));
結果:
┌─hex(SHA1('abc'))─────────────────────────┐
│ A9993E364706816ABA3E25717850C26C9CD0D89D │
└──────────────────────────────────────────┘
BLAKE3
BLAKE3ハッシュ文字列を計算し、結果のバイトセットをFixedStringとして返します。
構文
BLAKE3('s')
この暗号化ハッシュ関数はBLAKE3 Rustライブラリと統合されています。この関数はかなり速く、SHA-2と比較して約2倍の性能を示し、SHA-256と同じ長さのハッシュを生成します。
引数
- s - BLAKE3ハッシュ計算のための入力文字列。String。
返される値
- BLAKE3ハッシュを型FixedString(32)のバイト配列として返します。FixedString。
例
結果を16進エンコードされた文字列として表すには、hex関数を使用します。
クエリ:
SELECT hex(BLAKE3('ABC'))
結果:
┌─hex(BLAKE3('ABC'))───────────────────────────────────────────────┐
│ D1717274597CF0289694F75D96D444B992A096F1AFD8E7BBFA6EBB1D360FEDFC │
└──────────────────────────────────────────────────────────────────┘
URLHash(url[, N])
文字列をURLから取得し、ある種の正規化を行った後、高速で質の良い非暗号化ハッシュ関数を計算します。
URLHash(s)
– 終わりに/
、?
、#
のいずれかの追加入力シンボルがある場合、それを除いた状態で文字列からハッシュを計算します。
URLHash(s, N)
– 終わりに/
、?
、#
のいずれかの追加入力シンボルがある場合、それを除いた状態でURL階層のNレベルまでハッシュを計算します。
レベルはURLHierarchyと同じです。
farmFingerprint64
farmHash64
64ビットのFarmHashまたはFingerprint値を生成します。farmFingerprint64
は、安定していてポータブルな値が好ましい場合にお勧めします。
farmFingerprint64(par1, ...)
farmHash64(par1, ...)
これらの関数は、使用可能なすべてのメソッドから、それぞれFingerprint64
とHash64
メソッドを使用します。
引数
この関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、同じデータを持つMap
および対応するArray(Tuple(key, value))
型)。
返される値
UInt64データ型のハッシュ値。
例
SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmHash, toTypeName(FarmHash) AS type;
┌─────────────FarmHash─┬─type───┐
│ 17790458267262532859 │ UInt64 │
└──────────────────────┴────────┘
javaHash
JavaのStringからJavaHashを計算します, Byte, Short, Integer, Long. このハッシュ関数は速くもなく、高品質でもありません。このアルゴリズムが他のシステムで既に使用されていて、全く同じ結果を計算する必要がある場合にのみ使う理由があります。
Javaは符号付き整数のハッシュしか計算をサポートしていないことに注意してください。符号なし整数のハッシュを計算したい場合は、適切な符号付きClickHouse型にキャストする必要があります。
構文
SELECT javaHash('')
返される値
Int32
データ型のハッシュ値。
例
クエリ:
SELECT javaHash(toInt32(123));
結果:
┌─javaHash(toInt32(123))─┐
│ 123 │
└────────────────────────┘
クエリ:
SELECT javaHash('Hello, world!');
結果:
┌─javaHash('Hello, world!')─┐
│ -1880044555 │
└───────────────────────────┘
javaHashUTF16LE
文字列からJavaHashを計算し、それがUTF-16LEエンコーディングであるバイトを持つと仮定します。
構文
javaHashUTF16LE(stringUtf16le)
引数
stringUtf16le
— UTF-16LEエンコーディングされた文字列。
返される値
Int32
データ型のハッシュ値。
例
UTF-16LEエンコードされた文字列を用いた正しいクエリ。
クエリ:
SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'));
結果:
┌─javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))─┐
│ 3556498 │
└──────────────────────────────────────────────────────────────┘
hiveHash
文字列からHiveHash
を計算します。
SELECT hiveHash('')
これは、符号ビットをゼロ化したただのJavaHashです。この関数は、Apache Hiveバージョン3.0以前で使用されます。このハッシュ関数は速くも高品質でもありません。このアルゴリズムが他のシステムですでに使用されていて、完全に同じ結果を計算する必要がある場合にのみ使用する理由があります。
返される値
hiveHash
ハッシュ値。Int32。
例
クエリ:
SELECT hiveHash('Hello, world!');
結果:
┌─hiveHash('Hello, world!')─┐
│ 267439093 │
└───────────────────────────┘
metroHash64
64ビットのMetroHashハッシュ値を生成します。
metroHash64(par1, ...)
引数
この関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、同じデータを持つMap
および対応するArray(Tuple(key, value))
型)。
返される値
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 │
└──────────────────────┴────────┘
jumpConsistentHash
UInt64からJumpConsistentHashを計算します。
2つの引数を受け取ります: UInt64
型のキーとバケット数。返されるのはInt32
です。
詳細は、リンクをご覧ください: JumpConsistentHash
kostikConsistentHash
Konstantin 'kostik' OblakovによるO(1)時間および空間の一貫性ハッシュアルゴリズム。以前はyandexConsistentHash
。
構文
kostikConsistentHash(input, n)
別名: yandexConsistentHash
(後方互換性のために残されています)。
パラメータ
返される値
- UInt16データ型のハッシュ値。
実装の細部
n <= 32768の場合にのみ効率的です。
例
クエリ:
SELECT kostikConsistentHash(16045690984833335023, 2);
┌─kostikConsistentHash(16045690984833335023, 2)─┐
│ 1 │
└───────────────────────────────────────────────┘
murmurHash2_32, murmurHash2_64
MurmurHash2ハッシュ値を生成します。
murmurHash2_32(par1, ...)
murmurHash2_64(par1, ...)
引数
両方の関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、同じデータを持つMap
および対応するArray(Tuple(key, value))
型)。
返される値
例
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 │
└──────────────────────┴────────┘
gccMurmurHash
gccと同じハッシュシードを使用して64ビットのMurmurHash2ハッシュ値を計算します。ClangとGCCのビルド間で互換性があります。
構文
gccMurmurHash(par1, ...)
引数
par1, ...
— サポートされているデータ型のいずれかである可変数のパラメータ。
返される値
- 計算されたハッシュ値。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 │
└──────────────────────┴─────────────────────┘
kafkaMurmurHash
Kafkaと同じハッシュシードを使用して32ビットのMurmurHash2ハッシュ値を計算し、Default Partitionerと互換性があるように最上位ビットを持ちません。
構文
MurmurHash(par1, ...)
引数
par1, ...
— サポートされているデータ型のいずれかである可変数のパラメータ。
返される値
- 計算されたハッシュ値。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 │
└────────────┴──────────┘
murmurHash3_32, murmurHash3_64
MurmurHash3ハッシュ値を生成します。
murmurHash3_32(par1, ...)
murmurHash3_64(par1, ...)
引数
両方の関数は可変数の入力パラメータを取ります。引数はサポートされているデータ型のいずれかであり得ます。異なる型の引数でも、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります(異なるサイズの整数、同じデータを持つ名前付きおよび名前なしのTuple
、同じデータを持つMap
および対応するArray(Tuple(key, value))
型)。
返される値
例
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_128
128ビットのMurmurHash3ハッシュ値を生成します。
構文
murmurHash3_128(expr)
引数
返される値
128ビットのMurmurHash3
ハッシュ値。FixedString(16)。
例
クエリ:
SELECT hex(murmurHash3_128('foo', 'foo', 'foo'));
結果:
┌─hex(murmurHash3_128('foo', 'foo', 'foo'))─┐
│ F8F7AD9B6CD4CF117A71E277E2EC2931 │
└───────────────────────────────────────────┘
xxh3
64ビットのxxh3ハッシュ値を生成します。
構文
xxh3(expr)
引数
expr
— 任意のデータ型の式のリスト。
返される値
64ビットのxxh3
ハッシュ値。UInt64。
例
クエリ:
SELECT xxh3('Hello', 'world')
結果:
┌─xxh3('Hello', 'world')─┐
│ 5607458076371731292 │
└────────────────────────┘
xxHash32, xxHash64
文字列からxxHash
を計算します。32ビットと64ビットの2つのフレーバーがあります。
SELECT xxHash32('')
OR
SELECT xxHash64('')
返される値
- ハッシュ値。UInt32/64。
:::note
戻り型はxxHash32
の場合UInt32
、xxHash64
の場合UInt64
になります。
:::
例
クエリ:
SELECT xxHash32('Hello, world!');
結果:
┌─xxHash32('Hello, world!')─┐
│ 834093149 │
└───────────────────────────┘
関連項目
ngramSimHash
ASCII文字列をngramsize
シンボルのn-gramに分割し、n-gramのsimhash
を返します。大文字小文字を区別します。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
ngramSimHash(string[, ngramsize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT ngramSimHash('ClickHouse') AS Hash;
結果:
┌───────Hash─┐
│ 1627567969 │
└────────────┘
ngramSimHashCaseInsensitive
ASCII文字列をngramsize
シンボルのn-gramに分割し、n-gramのsimhash
を返します。大文字小文字を区別しません。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
ngramSimHashCaseInsensitive(string[, ngramsize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash;
結果:
┌──────Hash─┐
│ 562180645 │
└───────────┘
ngramSimHashUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、n-gramのsimhash
を返します。大文字小文字を区別します。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
ngramSimHashUTF8(string[, ngramsize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT ngramSimHashUTF8('ClickHouse') AS Hash;
結果:
┌───────Hash─┐
│ 1628157797 │
└────────────┘
ngramSimHashCaseInsensitiveUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、n-gramのsimhash
を返します。大文字小文字を区別しません。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
ngramSimHashCaseInsensitiveUTF8(string[, ngramsize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash;
結果:
┌───────Hash─┐
│ 1636742693 │
└────────────┘
wordShingleSimHash
ASCII文字列をshinglesize
単語の部分(シングル)に分割して、単語シングルのsimhash
を返します。大文字小文字を区別します。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
wordShingleSimHash(string[, shinglesize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
結果:
┌───────Hash─┐
│ 2328277067 │
└────────────┘
wordShingleSimHashCaseInsensitive
ASCII文字列をshinglesize
単語の部分(シングル)に分割して、単語シングルのsimhash
を返します。大文字小文字を区別しません。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
wordShingleSimHashCaseInsensitive(string[, shinglesize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
結果:
┌───────Hash─┐
│ 2194812424 │
└────────────┘
wordShingleSimHashUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割して、単語シングルのsimhash
を返します。大文字小文字を区別します。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
wordShingleSimHashUTF8(string[, shinglesize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
結果:
┌───────Hash─┐
│ 2328277067 │
└────────────┘
wordShingleSimHashCaseInsensitiveUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割して、単語シングルのsimhash
を返します。大文字小文字を区別しません。
bitHammingDistanceを使用して、半重複文字列を検出するために使用できます。計算された2つの文字列のsimhashes
のハミング距離が小さいほど、それらの文字列は同じ可能性が高くなります。
構文
wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize])
引数
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
結果:
┌───────Hash─┐
│ 2194812424 │
└────────────┘
wyHash64
64ビットのwyHash64ハッシュ値を生成します。
構文
wyHash64(string)
引数
string
— 文字列。String。
返される値
- ハッシュ値。UInt64。
例
クエリ:
SELECT wyHash64('ClickHouse') AS Hash;
結果:
┌─────────────────Hash─┐
│ 12336419557878201794 │
└──────────────────────┘
ngramMinHash
ASCII文字列をngramsize
シンボルのn-gramに分割し、各n-gramのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別します。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
ngramMinHash(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHash('ClickHouse') AS Tuple;
結果:
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,9054248444481805918) │
└────────────────────────────────────────────┘
ngramMinHashCaseInsensitive
ASCII文字列をngramsize
シンボルのn-gramに分割し、各n-gramのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別しません。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
ngramMinHashCaseInsensitive(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple;
結果:
┌─Tuple──────────────────────────────────────┐
│ (2106263556442004574,13203602793651726206) │
└────────────────────────────────────────────┘
ngramMinHashUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、各n-gramのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別します。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
ngramMinHashUTF8(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashUTF8('ClickHouse') AS Tuple;
結果:
┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,6742163577938632877) │
└────────────────────────────────────────────┘
ngramMinHashCaseInsensitiveUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、各n-gramのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別しません。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple;
結果:
┌─Tuple───────────────────────────────────────┐
│ (12493625717655877135,13203602793651726206) │
└─────────────────────────────────────────────┘
ngramMinHashArg
ASCII文字列をngramsize
シンボルのn-gramに分割し、最小および最大ハッシュを計算するngramMinHash関数で同じ入力を用いて計算されたn-gramsを返します。大文字小文字を区別します。
構文
ngramMinHashArg(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashArg('ClickHouse') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('Hou','lic','ick','ous','ckH','Cli')) │
└───────────────────────────────────────────────────────────────────────────────┘
ngramMinHashArgCaseInsensitive
ASCII文字列をngramsize
シンボルのn-gramに分割し、最小および最大ハッシュを計算するngramMinHashCaseInsensitive関数で同じ入力を用いて計算されたn-gramsを返します。大文字小文字を区別しません。
構文
ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','kHo','use','Cli'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘
ngramMinHashArgUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、最小および最大ハッシュを計算するngramMinHashUTF8関数で同じ入力を用いて計算されたn-gramsを返します。大文字小文字を区別します。
構文
ngramMinHashArgUTF8(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('kHo','Hou','lic','ick','ous','ckH')) │
└───────────────────────────────────────────────────────────────────────────────┘
ngramMinHashArgCaseInsensitiveUTF8
UTF-8文字列をngramsize
シンボルのn-gramに分割し、最小および最大ハッシュを計算するngramMinHashCaseInsensitiveUTF8関数で同じ入力を用いて計算されたn-gramsを返します。大文字小文字を区別しません。
構文
ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum])
引数
string
— 文字列。String。ngramsize
— n-gramのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ckH','ous','ick','lic','kHo','use'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘
wordShingleMinHash
ASCII文字列をshinglesize
単語の部分(シングル)に分割して、各単語シングルのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別します。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
wordShingleMinHash(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
結果:
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘
wordShingleMinHashCaseInsensitive
ASCII文字列をshinglesize
単語の部分(シングル)に分割して、各単語シングルのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別しません。
tupleHammingDistanceを使用して、半重複文字列を検出するために使用できます。2つの文字列の場合: 返されるハッシュのいずれかが両方の文字列で同じである場合、それらの文字列は同じであると考えます。
構文
wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。オプション。可能な値は1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果の計算に使用される最小および最大ハッシュの数。オプション。可能な値は1
から25
までの任意の数。デフォルト値:6
。UInt8।
返される値
例
クエリ:
SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘
wordShingleMinHashUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割して、各単語シングルのハッシュ値を計算します。hashnum
個の最小ハッシュを使用して最小ハッシュを計算し、hashnum
個の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別します。
はtupleHammingDistanceを使用して、半重複文字列の検出に使用できます。2つの文字列に対して、返されたハッシュの1つが両方の文字列で同じであれば、それらの文字列は同じであると考えます。
構文
wordShingleMinHashUTF8(string[, shinglesize, hashnum])
引数
string
— 文字列。 String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。 UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。 UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
結果:
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘
wordShingleMinHashCaseInsensitiveUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割し、各単語シングルに対するハッシュ値を計算します。hashnum
の最小ハッシュを使用して最小ハッシュを計算し、hashnum
の最大ハッシュを使用して最大ハッシュを計算します。これらのハッシュを含むタプルを返します。大文字小文字を区別しません。
はtupleHammingDistanceを使用して、半重複文字列の検出に使用できます。2つの文字列に対して、返されたハッシュの1つが両方の文字列で同じであれば、それらの文字列は同じであると考えます。
構文
wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;
結果:
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘
wordShingleMinHashArg
ASCII文字列をshinglesize
単語の部分(シングル)に分割し、同じ入力でwordshingleMinHash関数によって計算された最小および最大ワードハッシュを持つシングルを返します。大文字小文字を区別します。
構文
wordShingleMinHashArg(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashArg('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘
wordShingleMinHashArgCaseInsensitive
ASCII文字列をshinglesize
単語の部分(シングル)に分割し、同じ入力でwordShingleMinHashCaseInsensitive関数によって計算された最小および最大ワードハッシュを持つシングルを返します。大文字小文字を区別しません。
構文
wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
結果:
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘
wordShingleMinHashArgUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割し、同じ入力でwordShingleMinHashUTF8関数によって計算された最小および最大ワードハッシュを持つシングルを返します。大文字小文字を区別します。
構文
wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashArgUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
結果:
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','database','analytical'),('online','oriented','processing')) │
└───────────────────────────────────────────────────────────────────────┘
wordShingleMinHashArgCaseInsensitiveUTF8
UTF-8文字列をshinglesize
単語の部分(シングル)に分割し、同じ入力でwordShingleMinHashCaseInsensitiveUTF8関数によって計算された最小および最大ワードハッシュを持つシングルを返します。大文字小文字を区別しません。
構文
wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum])
引数
string
— 文字列。String。shinglesize
— 単語シングルのサイズ。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:3
。UInt8。hashnum
— 結果を計算するために使用される最小および最大ハッシュの数。省略可能。可能な値:1
から25
までの任意の数。デフォルト値:6
。UInt8。
返される値
例
クエリ:
SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple;
結果:
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('queries','database','analytical'),('oriented','processing','DBMS')) │
└────────────────────────────────────────────────────────────────────────┘
sqidEncode
番号をSqidとしてエンコードします。これはYouTubeのようなID文字列です。
出力アルファベットは abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
です。
ハッシュのためにこの関数を使用しないでください - 生成されたIDは元の番号にデコード可能です。
構文
sqidEncode(number1, ...)
エイリアス: sqid
引数
- 可変個数のUInt8, UInt16, UInt32またはUInt64の番号。
返される値
sqid String。
例
SELECT sqidEncode(1, 2, 3, 4, 5);
┌─sqidEncode(1, 2, 3, 4, 5)─┐
│ gXHfJ1C6dN │
└───────────────────────────┘
sqidDecode
Sqidを元の番号にデコードします。入力文字列が有効なsqidでない場合は、空の配列を返します。
構文
sqidDecode(sqid)
引数
- sqid - String
返される値
数値に変換されたsqid Array(UInt64)。
例
SELECT sqidDecode('gXHfJ1C6dN');
┌─sqidDecode('gXHfJ1C6dN')─┐
│ [1,2,3,4,5] │
└──────────────────────────┘