按 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 的回答是正确的,但有一点要注意:因为 substr
以 varchar
作为第一个参数,但是 sha256
returns varbinary
该代码将失败。
这是一个可行的替代方案:
from_big_endian_64(xxhash64(to_utf8(user_id)))
我想在 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 的回答是正确的,但有一点要注意:因为 substr
以 varchar
作为第一个参数,但是 sha256
returns varbinary
该代码将失败。
这是一个可行的替代方案:
from_big_endian_64(xxhash64(to_utf8(user_id)))