ClickHouse/docs/ru/sql-reference/functions/hash-functions.md
2022-05-07 12:08:37 +03:00

79 KiB
Raw Blame History

sidebar_position sidebar_label
50 Функции хэширования

Функции хэширования

Функции хэширования могут использоваться для детерминированного псевдослучайного разбрасывания элементов.

Simhash это хеш-функция, которая для близких значений возвращает близкий хеш.

halfMD5

Интерпретирует все входные параметры как строки и вычисляет хэш MD5 для каждой из них. Затем объединяет хэши, берет первые 8 байт хэша результирующей строки и интерпретирует их как значение типа UInt64 с big-endian порядком байтов.

halfMD5(par1, ...)

Функция относительно медленная (5 миллионов коротких строк в секунду на ядро процессора). По возможности, используйте функцию sipHash64 вместо неё.

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

Значение хэша с типом данных UInt64.

Пример

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

MD4

Вычисляет MD4 от строки и возвращает полученный набор байт в виде FixedString(16).

MD5

Вычисляет MD5 от строки и возвращает полученный набор байт в виде FixedString(16). Если вам не нужен конкретно MD5, а нужен неплохой криптографический 128-битный хэш, то используйте вместо этого функцию sipHash128. Если вы хотите получить такой же результат, как выдаёт утилита md5sum, напишите lower(hex(MD5(s))).

sipHash64

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

sipHash64(par1,...)

Это криптографическая хэш-функция. Она работает по крайней мере в три раза быстрее, чем функция MD5.

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

  1. После хэширования всех входных параметров функция получает массив хэшей.
  2. Функция принимает первый и второй элементы и вычисляет хэш для массива из них.
  3. Затем функция принимает хэш-значение, вычисленное на предыдущем шаге, и третий элемент исходного хэш-массива, и вычисляет хэш для массива из них.
  4. Предыдущий шаг повторяется для всех остальных элементов исходного хэш-массива.

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

Значение хэша с типом данных UInt64.

Пример

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

sipHash128

Генерирует 128-битное хеш-значение SipHash. Отличается от sipHash64 тем, что финальный xor-folding состояния делается до 128 бит.

Синтаксис

sipHash128(par1,...)

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

128-битное хеш-значение SipHash.

Тип: FixedString(16).

Пример

Запрос:

SELECT hex(sipHash128('foo', '\x01', 3));

Результат:

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

cityHash64

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

cityHash64(par1,...)

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

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

Значение хэша с типом данных UInt64.

Примеры

Пример вызова:

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

А вот так вы можете вычислить чексумму всей таблицы с точностью до порядка строк:

SELECT groupBitXor(cityHash64(*)) FROM table

intHash32

Вычисляет 32-битный хэш-код от целого числа любого типа. Это сравнительно быстрая не криптографическая хэш-функция среднего качества для чисел.

intHash64

Вычисляет 64-битный хэш-код от целого числа любого типа. Работает быстрее, чем intHash32. Качество среднее.

SHA1, SHA224, SHA256, SHA512

Вычисляет SHA-1, SHA-224, SHA-256, SHA-512 хеш строки и возвращает полученный набор байт в виде FixedString.

Синтаксис

SHA1('s')
...
SHA512('s')

Функция работает достаточно медленно (SHA-1 — примерно 5 миллионов коротких строк в секунду на одном процессорном ядре, SHA-224 и SHA-256 — примерно 2.2 миллионов). Рекомендуется использовать эти функции лишь в тех случаях, когда вам нужна конкретная хеш-функция и вы не можете её выбрать. Даже в этих случаях рекомендуется применять функцию офлайн — заранее вычисляя значения при вставке в таблицу, вместо того чтобы применять её при выполнении SELECT.

Параметры

  • s — входная строка для вычисления хеша SHA. String.

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

  • Хеш SHA в виде шестнадцатеричной некодированной строки FixedString. SHA-1 хеш как FixedString(20), SHA-224 как FixedString(28), SHA-256 — FixedString(32), SHA-512 — FixedString(64).

Тип: FixedString.

Пример

Используйте функцию hex для представления результата в виде строки с шестнадцатеричной кодировкой.

Запрос:

SELECT hex(SHA1('abc'));

Результат:

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

BLAKE3

Вычисляет BLAKE3 хеш строки и возвращает полученный набор байт в виде FixedString.

Синтаксис

BLAKE3('s')

Данная криптографическая функция интегрирована в ClickHouse из Rust-библиотеки. Функция работает сравнительно быстро, показывая в 2 раза более быстрые результаты по сравнению с SHA-2, генерируя хеши аналогичной SHA-256 длины.

Параметры

  • s - входная строка для вычисления хеша BLAKE3. String.

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

  • Хеш BLAKE3 в виде шестнадцатеричной строки, имеющей тип FixedString(32).

Тип: FixedString.

Пример

Используйте функцию hex для представления результата в виде строки с шестнадцатеричной кодировкой.

Запрос:

SELECT hex(BLAKE3('ABC'))

Результат:

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

URLHash(url[, N])

Быстрая не криптографическая хэш-функция неплохого качества для строки, полученной из URL путём некоторой нормализации. URLHash(s) - вычислить хэш от строки без одного завершающего символа /, ? или # на конце, если там такой есть. URLHash(s, N) - вычислить хэш от строки до N-го уровня в иерархии URL, без одного завершающего символа /, ? или # на конце, если там такой есть. Уровни аналогичные URLHierarchy. Функция специфична для Яндекс.Метрики.

farmFingerprint64

farmHash64

Создает 64-битное значение FarmHash, независимое от платформы (архитектуры сервера), что важно, если значения сохраняются или используются для разбиения данных на группы.

farmFingerprint64(par1, ...)
farmHash64(par1, ...)

Эти функции используют методы Fingerprint64 и Hash64 из всех доступных методов.

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

Значение хэша с типом данных UInt64.

Пример

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

javaHash

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

SELECT javaHash('')

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

Хэш-значение типа Int32.

Тип: javaHash.

Пример

Запрос:

SELECT javaHash('Hello, world!');

Результат:

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

javaHashUTF16LE

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

Синтаксис

javaHashUTF16LE(stringUtf16le)

Аргументы

  • stringUtf16le — строка в UTF-16LE.

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

Хэш-значение типа Int32.

Тип: javaHash.

Пример

Верный запрос для строки кодированной в UTF-16LE.

Запрос:

SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'));

Результат:

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

hiveHash

Вычисляет HiveHash от строки.

SELECT hiveHash('')

HiveHash — это результат JavaHash с обнулённым битом знака числа. Функция используется в Apache Hive вплоть до версии 3.0.

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

Хэш-значение типа Int32.

Тип: hiveHash.

Пример

Запрос:

SELECT hiveHash('Hello, world!');

Результат:

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

metroHash64

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

metroHash64(par1, ...)

Аргументы

Функция принимает переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

Значение хэша с типом данных UInt64.

Пример

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

jumpConsistentHash

Вычисляет JumpConsistentHash от значения типа UInt64. Имеет два параметра: ключ типа UInt64 и количество бакетов. Возвращает значение типа Int32. Дополнительные сведения смотрите по ссылке: JumpConsistentHash

murmurHash2_32, murmurHash2_64

Генерирует значение MurmurHash2.

murmurHash2_32(par1, ...)
murmurHash2_64(par1, ...)

Аргументы

Обе функции принимают переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

  • Функция murmurHash2_32 возвращает значение типа UInt32.
  • Функция murmurHash2_64 возвращает значение типа 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 │
└──────────────────────┴────────┘

gccMurmurHash

Вычисляет 64-битное значение MurmurHash2, используя те же hash seed, что и gcc.

Синтаксис

gccMurmurHash(par1, ...);

Аргументы

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

  • Вычисленный хэш-код.

Тип: UInt64.

Примеры

Запрос:

SELECT
    gccMurmurHash(1, 2, 3) AS res1,
    gccMurmurHash(('a', [1, 2, 3], 4, (4, ['foo', 'bar'], 1, (1, 2)))) AS res2

Результат:

┌─────────────────res1─┬────────────────res2─┐
│ 12384823029245979431 │ 1188926775431157506 │
└──────────────────────┴─────────────────────┘

murmurHash3_32, murmurHash3_64

Генерирует значение MurmurHash3.

murmurHash3_32(par1, ...)
murmurHash3_64(par1, ...)

Аргументы

Обе функции принимают переменное число входных параметров. Аргументы могут быть любого поддерживаемого типа данных.

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

  • Функция murmurHash3_32 возвращает значение типа UInt32.
  • Функция murmurHash3_64 возвращает значение типа UInt64.

Пример

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

murmurHash3_128

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

Синтаксис

murmurHash3_128(expr)

Аргументы

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

128-битное значение хеш-значение MurmurHash3.

Тип: FixedString(16).

Пример

Запрос:

SELECT hex(murmurHash3_128('foo', 'foo', 'foo'));

Результат:

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

xxHash32, xxHash64

Вычисляет xxHash от строки. Предлагается в двух вариантах: 32 и 64 бита.

SELECT xxHash32('')

OR

SELECT xxHash64('')

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

Хэш-значение типа Uint32 или Uint64.

Тип: xxHash.

Пример

Запрос:

SELECT xxHash32('Hello, world!');

Результат:

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

Смотрите также

ngramSimHash

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

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

Синтаксис

ngramSimHash(string[, ngramsize])

Аргументы

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

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

  • Значение хеш-функции от строки.

Тип: UInt64.

Пример

Запрос:

SELECT ngramSimHash('ClickHouse') AS Hash;

Результат:

┌───────Hash─┐
│ 1627567969 │
└────────────┘

ngramSimHashCaseInsensitive

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

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

Синтаксис

ngramSimHashCaseInsensitive(string[, ngramsize])

Аргументы

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

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

  • Значение хеш-функции от строки.

Тип: UInt64.

Пример

Запрос:

SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash;

Результат:

┌──────Hash─┐
│ 562180645 │
└───────────┘

ngramSimHashUTF8

Выделяет из UTF-8 строки отрезки (n-граммы) размером ngramsize символов и возвращает n-граммовый simhash. Функция регистрозависимая.

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

Синтаксис

ngramSimHashUTF8(string[, ngramsize])

Аргументы

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

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

  • Значение хеш-функции от строки.

Тип: UInt64.

Пример

Запрос:

SELECT ngramSimHashUTF8('ClickHouse') AS Hash;

Результат:

┌───────Hash─┐
│ 1628157797 │
└────────────┘

ngramSimHashCaseInsensitiveUTF8

Выделяет из 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 │
└────────────┘

wordShingleSimHash

Выделяет из 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

Выделяет из ASCII строки отрезки (шинглы) из shinglesize слов и возвращает шингловый simhash. Функция регистронезависимая.

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

Синтаксис

wordShingleSimHashCaseInsensitive(string[, shinglesize])

Аргументы

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

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

  • Значение хеш-функции от строки.

Тип: UInt64.

Пример

Запрос:

SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;

Результат:

┌───────Hash─┐
│ 2194812424 │
└────────────┘

wordShingleSimHashUTF8

Выделяет из 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 │
└────────────┘

wordShingleSimHashCaseInsensitiveUTF8

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

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

Синтаксис

wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize])

Аргументы

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

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

  • Значение хеш-функции от строки.

Тип: UInt64.

Пример

Запрос:

SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash;

Результат:

┌───────Hash─┐
│ 2194812424 │
└────────────┘

ngramMinHash

Выделяет из 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(UInt64, UInt64).

Пример

Запрос:

SELECT ngramMinHash('ClickHouse') AS Tuple;

Результат:

┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,9054248444481805918) │
└────────────────────────────────────────────┘

ngramMinHashCaseInsensitive

Выделяет из 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).

Пример

Запрос:

SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple;

Результат:

┌─Tuple──────────────────────────────────────┐
│ (2106263556442004574,13203602793651726206) │
└────────────────────────────────────────────┘

ngramMinHashUTF8

Выделяет из 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(UInt64, UInt64).

Пример

Запрос:

SELECT ngramMinHashUTF8('ClickHouse') AS Tuple;

Результат:

┌─Tuple──────────────────────────────────────┐
│ (18333312859352735453,6742163577938632877) │
└────────────────────────────────────────────┘

ngramMinHashCaseInsensitiveUTF8

Выделяет из 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(UInt64, UInt64).

Пример

Запрос:

SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple;

Результат:

┌─Tuple───────────────────────────────────────┐
│ (12493625717655877135,13203602793651726206) │
└─────────────────────────────────────────────┘

ngramMinHashArg

Выделяет из 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(Tuple(String), Tuple(String)).

Пример

Запрос:

SELECT ngramMinHashArg('ClickHouse') AS Tuple;

Результат:

┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('Hou','lic','ick','ous','ckH','Cli')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgCaseInsensitive

Выделяет из 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), Tuple(String)).

Пример

Запрос:

SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple;

Результат:

┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','kHo','use','Cli'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgUTF8

Выделяет из 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), Tuple(String)).

Пример

Запрос:

SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple;

Результат:

┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ous','ick','lic','Hou','kHo','use'),('kHo','Hou','lic','ick','ous','ckH')) │
└───────────────────────────────────────────────────────────────────────────────┘

ngramMinHashArgCaseInsensitiveUTF8

Выделяет из 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), Tuple(String)).

Пример

Запрос:

SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple;

Результат:

┌─Tuple─────────────────────────────────────────────────────────────────────────┐
│ (('ckH','ous','ick','lic','kHo','use'),('kHo','lic','ick','ous','ckH','Hou')) │
└───────────────────────────────────────────────────────────────────────────────┘

wordShingleMinHash

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

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

Синтаксис

wordShingleMinHash(string[, shinglesize, hashnum])

Аргументы

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

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

  • Кортеж с двумя хешами — минимальным и максимальным.

Тип: Tuple(UInt64, UInt64).

Пример

Запрос:

SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple;

Результат:

┌─Tuple──────────────────────────────────────┐
│ (16452112859864147620,5844417301642981317) │
└────────────────────────────────────────────┘

wordShingleMinHashCaseInsensitive

Выделяет из 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) │
└───────────────────────────────────────────┘

wordShingleMinHashUTF8

Выделяет из 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) │
└────────────────────────────────────────────┘

wordShingleMinHashCaseInsensitiveUTF8

Выделяет из 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) │
└───────────────────────────────────────────┘

wordShingleMinHashArg

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

Синтаксис

wordShingleMinHashArg(string[, shinglesize, hashnum])

Аргументы

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

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

  • Кортеж из двух кортежей, каждый из которых состоит из hashnum шинглов.

Тип: Tuple(Tuple(String), 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

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

Синтаксис

wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum])

Аргументы

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

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

  • Кортеж из двух кортежей, каждый из которых состоит из hashnum шинглов.

Тип: Tuple(Tuple(String), 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')) │
└────────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgUTF8

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

Синтаксис

wordShingleMinHashArgUTF8(string[, shinglesize, hashnum])

Аргументы

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

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

  • Кортеж из двух кортежей, каждый из которых состоит из hashnum шинглов.

Тип: Tuple(Tuple(String), 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')) │
└───────────────────────────────────────────────────────────────────────┘

wordShingleMinHashArgCaseInsensitiveUTF8

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

Синтаксис

wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum])

Аргументы

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

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

  • Кортеж из двух кортежей, каждый из которых состоит из hashnum шинглов.

Тип: Tuple(Tuple(String), 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')) │
└────────────────────────────────────────────────────────────────────────┘