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

Хеш-функции

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

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

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

Примечание

Хеш от значения NULL равен 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

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

Возвращает хеш SHA-512 для заданной входной строки в виде строки фиксированной длины. 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 от входного значения, используя то же значение 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─┬─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 символов и возвращает значение simhash для этих n-грамм.

Может использоваться для обнаружения частичных дубликатов строк с помощью 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 символов и возвращает simhash этих n-грамм. Функция нечувствительна к регистру.

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

Синтаксис

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 символов и возвращает simhash для этих n-грамм. Функция чувствительна к регистру.

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

Синтаксис

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-строку на части (shingles) по 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-строку на части (shingles) по shinglesize слов и возвращает simhash для этих шинглов. Функция регистронезависима.

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

Синтаксис

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. Чем меньше расстояние Хэмминга вычисленных simhashes двух строк, тем более вероятно, что эти строки совпадают.

Синтаксис

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