我需要编写为每一行生成唯一值的逻辑,我知道我可以使用MD5哈希,但我有一个限制,过去我们使用pandas dataframe方式通过上述方法生成唯一值,但现在我们正在使用 sql 方式,因此我们希望使用 pandas 方法为我们所做的每一行生成相同类型/数据类型的值。
有人可以帮忙吗? MD5 哈希以字母数字形式生成,但上述 pandas 方法以整数形式生成唯一值。
Amazon Athena 基于 PrestoDB,因此我认为您可以为数据生成 MD5 哈希值,如下所示:
生成 MD5 哈希值:
SELECT
to_utf8(column_name) AS utf8_encoded_column,
md5(to_utf8(column_name)) AS md5_hash
FROM your_table;
我使用
to_utf8(column_name)
将列数据转换为可以散列的格式。将 column_name
替换为您要散列的列名称。
将部分哈希值转换为整数:
然后您可以获取哈希的子字符串并将其转换为整数。 Athena 中的 MD5 哈希表示为
varbinary
类型,因此您可能需要先将其转换为十六进制字符串表示形式。
SELECT
CAST(from_base64(SUBSTRING(CAST(md5(to_utf8(column_name)) AS VARCHAR), 1, 8)) AS BIGINT) AS unique_integer
FROM your_table;