按 varchar 列拆分 Amazon Athena / Presto 中的数据

Split data in Amazon Athena / Presto by varchar column

我想在 Amazon Athena 数据库中按相似部分的 varchar 列拆分数据。如果我可以将 varchar 转换为 integer 我会使用 some_hash_function(data) mod n。但是 Athena 的散列函数 return varbinary 并不能转换为 integer.

那么,是否可以通过其他方式解决这个问题?

您可以使用 from_big_endian_64 函数将 8 字节 varbinary 转换为 bigint。这是一个完整的例子:

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

总的来说,Dain 的回答是正确的,但有一点要注意:因为 substrvarchar 作为第一个参数,但是 sha256 returns varbinary 该代码将失败。

这是一个可行的替代方案:

from_big_endian_64(xxhash64(to_utf8(user_id)))