Разделить данные в Amazon Athena / Presto по столбцу varchar - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу разделить данные в базе данных Amazon Athena по столбцу varchar на похожие части. Если бы я мог конвертировать varchar в integer, я бы использовал просто some_hash_function(data) mod n. Но хэш-функции Афины возвращают varbinary, и она не может быть приведена к integer.

Итак, можно ли решить эту проблему по-другому?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Как правило, ответ Дейна правильный, но есть небольшое замечание: поскольку substr принимает varchar в качестве первого аргумента, но sha256 возвращает varbinary, этот код не будет выполнен.

Здесьрабочая альтернатива:

from_big_endian_64(xxhash64(to_utf8(user_id)))

0 голосов
/ 25 апреля 2018

Вы можете преобразовать 8 байт varbinary в bigint, используя функцию from_big_endian_64. Вот полный пример:

select from_big_endian_64(substr(sha256(to_utf8('test')), 1, 8));

...