我希望在类似的部分上通过varchar
列在Amazon Athena数据库中拆分数据。如果我可以将varchar
转换为integer
,我会使用
some_hash_function(data) mod n
。但Athena的哈希函数返回varbinary
,并且无法转换为integer
。
那么,是否有可能以另一种方式解决这个问题?
答案 0 :(得分:2)
您可以使用from_big_endian_64
功能将8字节varbinary
转换为bigint
。这是一个完整的例子:
select from_big_endian_64(substr(sha256(to_utf8('test')), 1, 8));
答案 1 :(得分:2)
通常,Dain的答案是正确的,但有一点点评论:由于substr
将varchar
作为第一个参数,但sha256
返回varbinary
代码将失败
这是一个可行的替代方案:
from_big_endian_64(xxhash64(to_utf8(user_id)))