* Typo fix. * Links fix. * Fixed links in docs. * More fixes. * docs/en: cleaning some files * docs/en: cleaning data_types * docs/en: cleaning database_engines * docs/en: cleaning development * docs/en: cleaning getting_started * docs/en: cleaning interfaces * docs/en: cleaning operations * docs/en: cleaning query_lamguage * docs/en: cleaning en * docs/ru: cleaning data_types * docs/ru: cleaning index * docs/ru: cleaning database_engines * docs/ru: cleaning development * docs/ru: cleaning general * docs/ru: cleaning getting_started * docs/ru: cleaning interfaces * docs/ru: cleaning operations * docs/ru: cleaning query_language * docs: cleaning interfaces/http * Update docs/en/data_types/array.md decorated ``` Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/nyc_taxi.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/getting_started/example_datasets/ontime.md fixed typo Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/interfaces/formats.md fixed error Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/custom_partitioning_key.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/dicts/external_dicts_dict_sources.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/utils/clickhouse-local.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/json_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/other_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/query_language/functions/date_time_functions.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * Update docs/en/operations/table_engines/jdbc.md Co-Authored-By: BayoNet <da-daos@yandex.ru> * docs: fixed error * docs: fixed error
15 KiB
Функции хэширования
Функции хэширования могут использоваться для детерминированного псевдослучайного разбрасывания элементов.
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 │
└────────────────────┴────────┘
MD5
Вычисляет MD5 от строки и возвращает полученный набор байт в виде FixedString(16). Если вам не нужен конкретно MD5, а нужен неплохой криптографический 128-битный хэш, то используйте вместо этого функцию sipHash128. Если вы хотите получить такой же результат, как выдаёт утилита md5sum, напишите lower(hex(MD5(s))).
sipHash64
Генерирует 64-х битное значение SipHash.
sipHash64(par1,...)
Это криптографическая хэш-функция. Она работает по крайней мере в три раза быстрее, чем функция MD5.
Функция интерпретирует все входные параметры как строки и вычисляет хэш MD5 для каждой из них. Затем комбинирует хэши по следующему алгоритму.
- После хэширования всех входных параметров функция получает массив хэшей.
- Функция принимает первый и второй элементы и вычисляет хэш для массива из них.
- Затем функция принимает хэш-значение, вычисленное на предыдущем шаге, и третий элемент исходного хэш-массива, и вычисляет хэш для массива из них.
- Предыдущий шаг повторяется для всех остальных элементов исходного хэш-массива.
Параметры
Функция принимает переменное число входных параметров. Параметры могут быть любого поддерживаемого типа данных.
Возвращаемое значение
Значение хэша с типом данных 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
Вычисляет SipHash от строки. Принимает аргумент типа String. Возвращает FixedString(16). Отличается от sipHash64 тем, что финальный xor-folding состояния делается только до 128 бит.
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
Вычисляет SHA-1, SHA-224, SHA-256 от строки и возвращает полученный набор байт в виде FixedString(20), FixedString(28), FixedString(32). Функция работает достаточно медленно (SHA-1 - примерно 5 миллионов коротких строк в секунду на одном процессорном ядре, SHA-224 и SHA-256 - примерно 2.2 миллионов). Рекомендуется использовать эти функции лишь в тех случаях, когда вам нужна конкретная хэш-функция и вы не можете её выбрать. Даже в этих случаях, рекомендуется применять функцию оффлайн - заранее вычисляя значения при вставке в таблицу, вместо того, чтобы применять её при SELECT-ах.
URLHash(url[, N])
Быстрая некриптографическая хэш-функция неплохого качества для строки, полученной из URL путём некоторой нормализации.
URLHash(s)
- вычислить хэш от строки без одного завершающего символа /
, ?
или #
на конце, если там такой есть.
URLHash(s, N)
- вычислить хэш от строки до N-го уровня в иерархии URL, без одного завершающего символа /
, ?
или #
на конце, если там такой есть.
Уровни аналогичные URLHierarchy. Функция специфична для Яндекс.Метрики.
farmHash64
Генерирует 64-х битное значение FarmHash.
farmHash64(par1, ...)
Из всех доступных методов функция использует 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 от строки. Принимает аргумент типа String. Возвращает значение типа Int32.
hiveHash
Вычисляет HiveHash от строки. Принимает аргумент типа String. Возвращает значение типа Int32. HiveHash — это результат JavaHash с обнулённым битом знака числа. Функция используется в Apache Hive вплоть до версии 3.0.
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 │
└──────────────────────┴────────┘
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
Генерирует значение MurmurHash3.
murmurHash3_128( expr )
Параметры
Возвращаемое значение
Хэш-значение типа FixedString(16).
Пример
SELECT murmurHash3_128('example_string') AS MurmurHash3, toTypeName(MurmurHash3) AS type
┌─MurmurHash3──────┬─type────────────┐
│ 6<>1<1C>4"S5KT<4B>~~q │ FixedString(16) │
└──────────────────┴─────────────────┘
xxHash32, xxHash64
Вычисляет xxHash от строки. Принимает аргумент типа String. Возвращает значение типа Uint64 или Uint32. Дополнительные сведения см. по ссылке: xxHash