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

MURMUR_HASH3_64_V2

Описание​

Вычисляет 64-битное хеш-значение MurmurHash3 со знаком. Вариант без знака описан в разделе murmur_hash3_u64_v2

Отличие от MURMUR_HASH3_64 заключается в том, что эта версия повторно использует функцию обработки 128-битных значений MurmurHash3, возвращая только первое 64-битное хеш-значение, что соответствует реализации стандартной библиотеки.

Примечание: по результатам тестирования производительность xxhash_64 примерно в 2 раза выше, чем у murmur_hash3_64. Поэтому для вычисления хеш-значений рекомендуется использовать xxhash_64 вместо murmur_hash3_64.

Синтаксис​

MURMUR_HASH3_64_V2( <str> [ , <str> ... ] )

Параметры​

ПараметрОписание
<str>Значение, для которого вычисляется 64-битный хеш MurmurHash3

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

Возвращает 64-битное хеш-значение MurmurHash3 для входной строки.

Возвращает NULL, если хотя бы один параметр равен NULL.

Примеры​

select murmur_hash3_64_v2(null), murmur_hash3_64_v2("hello"), murmur_hash3_64_v2("hello", "world");
+--------------------------+-----------------------------+--------------------------------------+
| murmur_hash3_64_v2(null) | murmur_hash3_64_v2("hello") | murmur_hash3_64_v2("hello", "world") |
+--------------------------+-----------------------------+--------------------------------------+
| NULL | -3758069500696749310 | -662943091231200135 |
+--------------------------+-----------------------------+--------------------------------------+
-- The function outputs a signed 64-bit integer.
SELECT
mmhash3_64_v2,
mmhash3_u64_v2,
i64_to_ui64 = mmhash3_u64_v2 AS is_equal
FROM (
SELECT
murmur_hash3_64_v2('1013199993_1756808272') AS mmhash3_64_v2,
murmur_hash3_u64_v2('1013199993_1756808272') AS mmhash3_u64_v2,
CAST(murmur_hash3_64_v2('1013199993_1756808272') AS LARGEINT) & 18446744073709551615 AS i64_to_ui64
) t;
+----------------------+----------------------+----------+
| mmhash3_64_v2 | mmhash3_u64_v2 | is_equal |
+----------------------+----------------------+----------+
| -2648103510258542450 | 15798640563451009166 | 1 |
+----------------------+----------------------+----------+