Pandas pandas.util.hash_pandas_object 的 SQL 等效项

问题描述 投票:0回答:1

我需要编写为每一行生成唯一值的逻辑,我知道我可以使用MD5哈希,但我有一个限制,过去我们使用pandas dataframe方式通过上述方法生成唯一值,但现在我们正在使用 sql 方式,因此我们希望使用 pandas 方法为我们所做的每一行生成相同类型/数据类型的值。

有人可以帮忙吗? MD5 哈希以字母数字形式生成,但上述 pandas 方法以整数形式生成唯一值。

sql pandas dataframe md5 amazon-athena
1个回答
0
投票

Amazon Athena 基于 PrestoDB,因此我认为您可以为数据生成 MD5 哈希值,如下所示:

  1. 生成 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
    替换为您要散列的列名称。

  2. 将部分哈希值转换为整数

    然后您可以获取哈希的子字符串并将其转换为整数。 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;
    
© www.soinside.com 2019 - 2024. All rights reserved.