Перейти к основному содержимому
Перейти к основному содержимому

Хеш-функции

Хеш-функции могут использоваться для детерминированного псевдослучайного перемешивания элементов.

Simhash — это хеш-функция, которая возвращает близкие хеш-значения для близких (похожих) аргументов.

Большинство хеш-функций принимают любое количество аргументов любого типа.

примечание

Хеш NULL — это NULL. Чтобы получить ненулевой хеш для Nullable колонки, оберните его в кортеж:

SELECT cityHash64(tuple(NULL))
примечание

Чтобы вычислить хеш всего содержимого таблицы, используйте sum(cityHash64(tuple(*))) (или другую хеш-функцию). tuple гарантирует, что строки с NULL значениями не будут пропущены. sum гарантирует, что порядок строк не имеет значения.

BLAKE3

Введен в: v22.10

Вычисляет строку хеша BLAKE3 и возвращает полученный набор байтов в виде FixedString. Эта криптографическая хеш-функция интегрирована в ClickHouse с библиотекой BLAKE3 на Rust. Функция довольно быстрая и показывает примерно в два раза большую производительность по сравнению с SHA-2, при этом генерируя хеши той же длины, что и SHA-256. Она возвращает хеш BLAKE3 в виде массива байтов с типом FixedString(32).

Синтаксис

BLAKE3(message)

Аргументы

  • message — Входная строка для хеширования. String

Возвращаемое значение

Возвращает 32-байтный хеш BLAKE3 входной строки в виде строки фиксированной длины. 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('The quick brown fox jumps over the lazy dog'));
┌─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 с использованием некоторого типа нормализации.

Эта хеш-функция имеет два режима:

РежимОписание
URLHash(url)Вычисляет хеш из строки без одного из завершающих символов /,? или # в конце, если они присутствуют.
URLHash(url, N)Вычисляет хеш из строки до N уровня в иерархии URL, без одного из завершающих символов /,? или # в конце, если они присутствуют. Уровни такие же, как в 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);
-- hash of https://www.clickhouse.com
┌─URLHash('htt⋯m/docs', 0)─┐
│     13614512636072854701 │
└──────────────────────────┘
-- hash of https://www.clickhouse.com/docs
┌─URLHash('htt⋯m/docs', 1)─┐
│     13167253331440520598 │
└──────────────────────────┘

cityHash64

Введен в: v1.1

Генерирует 64-битное хеш-значение CityHash.

Это быстрая некриптографическая хеш-функция. Она использует алгоритм CityHash для строковых параметров и специфичную для реализации быструю некриптографическую хеш-функцию для параметров с другими типами данных. Функция использует комбинатор CityHash для получения окончательных результатов.

к сведению

Google изменила алгоритм CityHash после его добавления в ClickHouse. Иными словами, cityHash64 в ClickHouse и исходный CityHash от Google теперь производят разные результаты. cityHash64 в ClickHouse соответствует 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

Генерирует 64-битное значение FarmHash с помощью метода Fingerprint64.

подсказка

farmFingerprint64 предпочтителен для стабильного и переносимого значения по сравнению с farmHash64.

примечание

Вычисленные хеш-значения могут быть равны для одинаковых входных значений различных типов аргументов. Это влияет, например, на целочисленные типы разного размера, именованные и неименованные 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

Генерирует 64-битный FarmHash с использованием метода Hash64.

подсказка

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

Вычисляет 64-битный хеш MurmurHash2 для входного значения, используя тот же сид, что и GCC.

Он совместим между сборками 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 в порядке байтов big-endian. Функция относительно медленная (5 миллионов коротких строк в секунду на один процессорный ядро).

Рекомендуется использовать вместо этой функции sipHash64.

Функция принимает переменное количество входных параметров. Аргументы могут быть любыми из поддерживаемых типов данных. Для некоторых типов данных вычисленное значение хеш-функции может оставаться одинаковым для одинаковых значений, даже если типы аргументов различаются (целые числа разного размера, именованные и неименованные Tuple с одинаковыми данными, Map и соответствующий тип Array(Tuple(key, value)) с одинаковыми данными).

Синтаксис

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

Аргументы

  • arg1[, arg2, ..., argN] — Переменное количество аргументов для вычисления хеша. Any

Возвращаемое значение

Возвращает вычисленный половинный хеш MD5 для данных входных параметров, возвращенный как UInt64 в порядке байтов big-endian. UInt64

Примеры

Пример использования

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

hiveHash

Введен в: v20.1

Вычисляет "HiveHash" для строки. Это просто JavaHash с обнуленными знаковыми битами. Эта функция используется в Apache Hive для версий до 3.0.

Эта хеш-функция неэффективна. Используйте ее только когда этот алгоритм уже используется в другой системе, и вам нужно вычислить такой же результат. :::

Синтаксис

hiveHash(arg)

Аргументы

  • arg — Входная строка для хеширования. String

Возвращаемое значение

Возвращает вычисленный "hive hash" для входной строки. Int32

Примеры

Пример использования

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

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

Вычисляет JavaHash из строки, предполагая, что она содержит байты, представляющие строку в кодировке UTF-16LE.

Синтаксис

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

Алгоритм консистентного хеширования за O(1) времени и пространства от Константина "Костика" Облакова. Эффективен только при n <= 32768.

Синтаксис

kostikConsistentHash(input, n)

Аргументы

  • 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 строку на n-граммы размером ngramsize символов и вычисляет хеш-значения для каждой n-граммы, возвращая кортеж с этими хешами. Использует hashnum минимальных хешей для вычисления минимального хеша и hashnum максимальных хешей для вычисления максимального хеша. Учитывает регистр.

Может использоваться для обнаружения полудубликатов строк с помощью tupleHammingDistance. Для двух строк, если возвращаемые хеши одинаковы, то эти строки идентичны.

Синтаксис

ngramMinHash(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой необходимо вычислить хеш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж из двух хешей — минимального и максимального. Tuple

Примеры

Пример использования

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

ngramMinHashArg

Введен в: v21.1

Разделяет ASCII строку на n-граммы размером ngramsize символов и возвращает n-граммы с минимальными и максимальными хешами, вычисленными с помощью функции ngramMinHash с теми же входными данными. Учитывает регистр.

Синтаксис

ngramMinHashArg(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой необходимо вычислить хеш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж из двух кортежей с hashnum n-граммами каждый. Tuple(String)

Примеры

Пример использования

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

ngramMinHashArgCaseInsensitive

Введен в: v21.1

Разделяет ASCII строку на n-граммы размером ngramsize символов и возвращает n-граммы с минимальными и максимальными хешами, вычисленными с помощью функции ngramMinHashCaseInsensitive с теми же входными данными. Игнорирует регистр.

Синтаксис

ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой необходимо вычислить хеш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж из двух кортежей с hashnum n-граммами каждый. 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 строку на n-граммы размером ngramsize символов и возвращает n-граммы с минимальными и максимальными хешами, вычисленными с помощью функции ngramMinHashCaseInsensitiveUTF8 с теми же входными данными. Игнорирует регистр.

Синтаксис

ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой необходимо вычислить хеш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж из двух кортежей с hashnum n-граммами каждый. 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 строку на n-граммы размером ngramsize символов и возвращает n-граммы с минимальными и максимальными хешами, вычисленными с помощью функции ngramMinHashUTF8 с теми же входными данными. Учитывает регистр.

Синтаксис

ngramMinHashArgUTF8(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой необходимо вычислить хеш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж из двух кортежей с hashnum n-граммами каждый. 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 строку на n-граммы размером ngramsize символов и вычисляет хеш-значения для каждой n-граммы и возвращает кортеж с этими хешами. Использует hashnum минимальных хешей для вычисления минимального хеша и hashnum максимальных хешей для вычисления максимального хеша. Игнорирует регистр.

Может использоваться для обнаружения полудубликатов строк с помощью tupleHammingDistance. Для двух строк, если возвращаемые хеши одинаковы, тогда эти строки идентичны.

Синтаксис

ngramMinHashCaseInsensitive(string[, ngramsize, hashnum])

Аргументы

  • string — Строка. String.
  • ngramsize — Размер n-граммы. Необязательный. Возможные значения: любое число от 1 до 25. Значение по умолчанию: 3. UInt8.
  • hashnum — Количество минимальных и максимальных хешей, используемых для вычисления результата. Необязательный. Возможные значения: любое число от 1 до 25. Значение по умолчанию: 6. UInt8.

Возвращаемое значение

Кортеж из двух хешей — минимального и максимального. Tuple(UInt64, UInt64). Tuple

Примеры

Пример использования

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

ngramMinHashCaseInsensitiveUTF8

Введено в: v21.1

Разделяет строку UTF-8 на n-граммы размером ngramsize символов и вычисляет хэш-значения для каждой n-граммы, возвращая кортеж с этими хэшами. Использует hashnum минимальных хэшей для вычисления минимального хэша и hashnum максимальных хэшей для вычисления максимального хэша. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью tupleHammingDistance. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. Tuple

Примеры

Пример использования

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

ngramMinHashUTF8

Введено в: v21.1

Разделяет строку UTF-8 на n-граммы размером ngramsize символов и вычисляет хэш-значения для каждой n-граммы, возвращая кортеж с этими хэшами. Использует hashnum минимальных хэшей для вычисления минимального хэша и hashnum максимальных хэшей для вычисления максимального хэша. Этот метод чувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью tupleHammingDistance. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

ngramMinHashUTF8(string[, ngramsize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. Tuple

Примеры

Пример использования

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

ngramSimHash

Введено в: v21.1

Разделяет строку ASCII на n-граммы размером ngramsize символов и возвращает n-граммовый simhash.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

ngramSimHash(string[, ngramsize])

Аргументы

  • string — Строка, для которой вычисляется чувствительный к регистру simhash. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение входной строки. UInt64

Примеры

Пример использования

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

ngramSimHashCaseInsensitive

Введено в: v21.1

Разделяет строку ASCII на n-граммы размером ngramsize символов и возвращает n-граммовый simhash. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

ngramSimHashCaseInsensitive(string[, ngramsize])

Аргументы

  • string — Строка, для которой вычисляется нечувствительный к регистру simhash. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Хэш-значение. UInt64. UInt64

Примеры

Пример использования

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

ngramSimHashCaseInsensitiveUTF8

Введено в: v21.1

Разделяет строку UTF-8 на n-граммы размером ngramsize символов и возвращает n-граммовый simhash. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

ngramSimHashCaseInsensitiveUTF8(string[, ngramsize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

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

ngramSimHashUTF8

Введено в: v21.1

Разделяет закодированную в UTF-8 строку на n-граммы размером ngramsize символов и возвращает n-граммовый simhash. Этот метод чувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

ngramSimHashUTF8(string[, ngramsize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • ngramsize — Необязательный. Размер n-граммы, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

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

sipHash128

Введено в: v1.1

Как sipHash64, но производит 128-битное хэш-значение, т.е. финальное состояние xor-складывания выполняется до 128 бит.

используйте sipHash128Reference для новых проектов

Этот 128-битный вариант отличается от эталонной реализации и является менее надежным. Эта версия существует, потому что на момент ее написания не было официального 128-битного расширения для SipHash. Новым проектам рекомендуется использовать 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-битный вариант отличается от эталонной реализации и является менее надежным. Эта версия существует, потому что на момент ее написания не было официального 128-битного расширения для SipHash. Новым проектам, вероятно, следует использовать sipHash128ReferenceKeyed.

Синтаксис

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

Аргументы

  • (k0, k1) — Кортеж из двух значений UInt64, представляющих ключ. Tuple(UInt64, UInt64)
  • arg1[, arg2, ...] — Переменное количество входных аргументов, для которых вычисляется хэш. Any

Возвращаемое значение

128-битное хэш-значение SipHash типа FixedString(16). FixedString(16)

Примеры

Пример использования

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

sipHash128Reference

Введено в: v23.2

Как sipHash128, но реализует 128-битный алгоритм от оригинальных авторов SipHash.

Синтаксис

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) — Кортеж из двух значений, представляющих ключ 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.

Функция интерпретирует все входные параметры как строки и вычисляет хэш-значение для каждого из них. Затем она объединяет хэши, используя следующий алгоритм:

  1. Первое и второе хэш-значение объединяются в массив, который хэшируется.
  2. Предыдущее вычисленное хэш-значение и хэш третьего входного параметра хэшируются аналогичным образом.
  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) — Кортеж из двух значений, представляющих ключ. 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. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

wordShingleMinHash(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. 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 — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя кортежами по hashnum шинглов. Tuple(Tuple(String))

Примеры

Пример использования

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

Введено в: v21.1

Разделяет строку ASCII на части (шинглы) размером shinglesize слов и возвращает шинглы с минимальными и максимальными хэшами слов, вычисленными с помощью функции wordShingleMinHashCaseInsensitive с теми же входными данными. Этот метод нечувствителен к регистру.

Синтаксис

wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя кортежами по hashnum шинглов. Tuple(Tuple(String))

Примеры

Пример использования

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')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgCaseInsensitiveUTF8

Введено в: v21.1

Разделяет строку UTF-8 на части (шинглы) размером shinglesize слов и возвращает шинглы с минимальными и максимальными хэшами слов, вычисленными с помощью функции wordShingleMinHashCaseInsensitiveUTF8 с теми же входными данными. Этот метод нечувствителен к регистру.

Синтаксис

wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя кортежами по hashnum шинглов. Tuple(Tuple(String))

Примеры

Пример использования

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')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgUTF8

Введено в: v21.1

Разделяет строку UTF-8 на части (шинглы) размером shinglesize слов и возвращает шинглы с минимальными и максимальными хэшами слов, вычисленными с помощью функции wordShingleMinHashUTF8 с теми же входными данными. Этот метод чувствителен к регистру.

Синтаксис

wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя кортежами по hashnum шинглов. Tuple(Tuple(String))

Примеры

Пример использования

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')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashCaseInsensitive

Введено в: v21.1

Разделяет строку ASCII на части (шинглы) размером shinglesize слов, вычисляет хэш-значения для каждого шингла и возвращает кортеж с этими хэшами. Использует hashnum минимальных хэшей для вычисления минимального хэша и hashnum максимальных хэшей для вычисления максимального хэша. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью tupleHammingDistance. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. 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 слов, вычисляет хэш-значения для каждого шингла и возвращает кортеж с этими хэшами. Использует hashnum минимальных хэшей для вычисления минимального хэша и hashnum максимальных хэшей для вычисления максимального хэша. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью tupleHammingDistance. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. Tuple(UInt64, UInt64)

Примеры

Пример использования

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

wordShingleMinHashUTF8

Введено в: v21.1

Разделяет строку UTF-8 на части (шинглы) размером shinglesize слов, вычисляет хэш-значения для каждого шингла и возвращает кортеж с этими хэшами. Использует hashnum минимальных хэшей для вычисления минимального хэша и hashnum максимальных хэшей для вычисления максимального хэша. Этот метод чувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью tupleHammingDistance. Если хэши, возвращаемые для двух строк, одинаковы, то эти строки идентичны.

Синтаксис

wordShingleMinHashUTF8(string[, shinglesize, hashnum])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8
  • hashnum — Необязательный. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от 1 до 25. Значение по умолчанию — 6. UInt8

Возвращаемое значение

Возвращает кортеж с двумя хэшами — минимальным и максимальным. Tuple(UInt64, UInt64)

Примеры

Пример использования

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

wordShingleSimHash

Введено в: v21.1

Разделяет строку ASCII на части (шинглы) размером shinglesize слов и возвращает simhash шингла. Этот метод чувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

wordShingleSimHash(string[, shinglesize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
┌───────Hash─┐
│ 2328277067 │
└────────────┘

wordShingleSimHashCaseInsensitive

Введено в: v21.1

Разделяет строку ASCII на части (шинглы) размером shinglesize слов и возвращает simhash шингла. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

wordShingleSimHashCaseInsensitive(string[, shinglesize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
┌───────Hash─┐
│ 2194812424 │
└────────────┘

wordShingleSimHashCaseInsensitiveUTF8

Введено в: v1.1

Разделяет закодированную в UTF-8 строку на части (шинглы) размером shinglesize слов и возвращает simhash шингла. Этот метод нечувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;
┌───────Hash─┐
│ 2194812424 │
└────────────┘

wordShingleSimHashUTF8

Введено в: v21.1

Разделяет строку UTF-8 на части (шинглы) размером shinglesize слов и возвращает simhash шингла. Этот метод чувствителен к регистру.

Может быть использован для обнаружения полудублированных строк с помощью bitHammingDistance. Чем меньше расстояние Хэмминга между вычисленными simhash двух строк, тем более вероятно, что эти строки одинаковы.

Синтаксис

wordShingleSimHashUTF8(string[, shinglesize])

Аргументы

  • string — Строка, для которой вычисляется хэш. String
  • shinglesize — Необязательный. Размер шингла, любое число от 1 до 25. Значение по умолчанию — 3. UInt8

Возвращаемое значение

Возвращает вычисленное хэш-значение. UInt64

Примеры

Пример использования

SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') 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

Вычисляет 64-битное хэш-значение XXH3.

Синтаксис

xxh3(expr)

Аргументы

  • expr — Список выражений любого типа данных. Any

Возвращаемое значение

Возвращает вычисленное 64-битное значение хэша xxh3 UInt64

Примеры

Пример использования

SELECT xxh3('ClickHouse')
18009318874338624809