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

Хеш-функции

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

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

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

Примечание

Хеш от NULL равен NULL. Чтобы получить хеш Nullable-столбца, отличный от NULL, оберните его в tuple:

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('Быстрая коричневая лиса перепрыгивает через ленивую собаку'));
┌─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 с использованием некоторого вида нормализации.

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

ModeDescription
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);
-- хеш 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. Другими словами, 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 для входного значения, используя то же начальное значение (seed), что и в 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 │
└───────────────────────────┘

icebergHash

Впервые представлена в: v25.5

Реализует логику хеш‑преобразования Iceberg

Синтаксис

icebergHash(value)

Аргументы

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

Возвращает 32-битный хеш Murmur3, вариант x86, с начальным значением (seed) 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

Вычисляет 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 входного значения, используя тот же seed, что и в 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), разработанный Konstantin «Kostik» Oblakov. Эффективен только при 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─┬─тип────┐
│ 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─┬─тип────┐
│  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─┬─тип────┐
│ 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─┬─тип────┐
│     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─┬─тип────┐
│ 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;
┌─Кортеж─────────────────────────────────────┐
│ (18333312859352735453,9054248444481805918) │
└────────────────────────────────────────────┘

ngramMinHashArg

Появилась в версии v21.1

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

Синтаксис

ngramMinHashArg(строка[, размер_нграммы, число_хешей])

Аргументы

  • 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;
┌─Кортеж──────────────────────────────────────┐
│ (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;
┌─Кортеж─────────────────────────────────────┐
│ (18333312859352735453,6742163577938632877) │
└────────────────────────────────────────────┘

ngramSimHash

Введена в версии v21.1

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

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

Синтаксис

ngramSimHash(string[, ngramsize])

Аргументы

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

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

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

Примеры

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

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

ngramSimHashCaseInsensitive

Добавлено в версии: v21.1

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

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

Синтаксис

ngramSimHashCaseInsensitive(строка[, размер_н-граммы])

Аргументы

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

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

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

Примеры

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

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

ngramSimHashCaseInsensitiveUTF8

Появилась в версии: v21.1

Разбивает строку в кодировке UTF-8 на n-граммы из ngramsize символов и возвращает simhash этих n-грамм. Функция нечувствительна к регистру.

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

Синтаксис

ngramSimHashCaseInsensitiveUTF8(string[, ngramsize])

Аргументы

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

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

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

Примеры

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

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

ngramSimHashUTF8

Добавлена в: v21.1

Разбивает строку в кодировке UTF-8 на n-граммы из ngramsize символов и возвращает simhash этих n-грамм. Функция чувствительна к регистру.

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

Синтаксис

ngramSimHashUTF8(string[, ngramsize])

Аргументы

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

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

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

Примеры

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

SELECT ngramSimHashUTF8('ClickHouse') AS Хэш;
┌───────Хеш─┐
│ 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─┬─тип───┐
│ 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─┬─Тип────┐
│ 8017656310194184311 │ UInt64 │
└─────────────────────┴────────┘

wordShingleMinHash

Впервые появилась в версии: v21.1

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

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

Синтаксис

wordShingleMinHash(string[, размер_шингла, число_хешей])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHash('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple;
┌─Кортеж─────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘

wordShingleMinHashArg

Появилась в версии v1.1

Разбивает ASCII-строку на части (шинглы), каждая из которых содержит по shinglesize слов, и возвращает шинглы с минимальным и максимальным хешами слов, вычисленными функцией wordShingleMinHash с теми же входными данными. Функция чувствительна к регистру.

Синтаксис

wordShingleMinHashArg(строка[, размершингла, числохешей])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHashArg('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','база данных','аналитическая'),('онлайн','ориентированная','обработка')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgCaseInsensitive

Добавлена в: v21.1

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

Синтаксис

wordShingleMinHashArgCaseInsensitive(строка[, размер_шингла, количество_хешей])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple;
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('запросы','база данных','аналитическая'),('ориентированная','обработка','СУБД')) │
└────────────────────────────────────────────────────────────────────────┘

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® — колонкоориентированная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple;
┌─Tuple──────────────────────────────────────────────────────────────────┐
│ (('запросы','база данных','аналитическая'),('ориентированная','обработка','СУБД')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgUTF8

Введена в версии: v21.1

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

Синтаксис

wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHashArgUTF8('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple;
┌─Tuple─────────────────────────────────────────────────────────────────┐
│ (('OLAP','база данных','аналитическая'),('онлайн','ориентированная','обработка')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashCaseInsensitive

Впервые появилась в: v21.1

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

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

Синтаксис

wordShingleMinHashCaseInsensitive(строка[, размершингла, количествохешей])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHashCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД), предназначенная для онлайн-аналитической обработки запросов (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® — это колоночная СУБД (DBMS) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple;
┌─Tuple─────────────────────────────────────┐
│ (3065874883688416519,1634050779997673240) │
└───────────────────────────────────────────┘

wordShingleMinHashUTF8

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

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

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

Синтаксис

wordShingleMinHashUTF8(строка[, размер_шингла, количество_хешей])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleMinHashUTF8('ClickHouse® — колонко-ориентированная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple;
┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘

wordShingleSimHash

Введена в версии: v21.1

Разбивает ASCII-строку на части (шинглы) из shinglesize слов и возвращает значение simhash для словесного шингла. Функция чувствительна к регистру.

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

Синтаксис

wordShingleSimHash(строка[, размер_шингла])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleSimHash('ClickHouse® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Hash;
┌───────Хэш─┐
│ 2328277067 │
└────────────┘

wordShingleSimHashCaseInsensitive

Добавлена в версии: v21.1

Разбивает ASCII-строку на части (шинглы) по shinglesize слов и возвращает simhash этих шинглов. Функция регистронезависима.

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

Синтаксис

wordShingleSimHashCaseInsensitive(string[, shinglesize])

Аргументы

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

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

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

Примеры

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

SELECT wordShingleSimHashCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS 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® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS 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® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS 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('Привет, мир!');
┌─xxHash64('Hello, world!')─┐
│      17691043854468224118 │
└───────────────────────────┘

xxh3

Появилась в версии: v22.12

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

Синтаксис

xxh3(expr)

Аргументы

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

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

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

Примеры

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

SELECT xxh3('ClickHouse')
18009318874338624809