用于DB表中多列的Presto MD5哈希

时间:2017-04-19 10:48:48

标签: sql hash md5 presto amazon-athena

我正面临一个挑战,经过两个小时的反复试验后让我发疯了......

我需要使用presto(至少使用presto引擎的Amazon Athena)哈希关系表的至少两列。

我目前的状态是:

SELECT concat(lower(to_hex(md5(to_utf8(trim(column1))))),
              lower(to_hex(md5(to_utf8(trim(column2)))))) AS HK
FROM table
limit 10

这个问题是,它首先对列进行哈希处理,然后将它们连接起来,最终看起来像这样,因为它连接了哈希:

8f9bfe9d1345237cb3b2b205864da075ce8ae9da5b7cd6c3df2929543a9af92d

不是首先连接字符串然后对它进行哈希处理,而是应该像这样结束:

8f9bfe9d1345237cb3b2b205864da075

我非常感谢有关如何解决这个问题的任何想法。

编辑:

我有一个解决方案,但只是没有使用trim()函数,查询不起作用并导致错误消息

  

INVALID_FUNCTION_ARGUMENT:必须有两个或多个连接参数

当前查询:

SELECT lower(to_hex(md5(to_utf8(concat(user, email))))) AS UserMailHK FROM table limit 10

有关于此的任何想法吗?

1 个答案:

答案 0 :(得分:2)

感谢Piotr,我得到了一个解决方案!

SELECT lower(to_hex(md5(to_utf8(concat(trim(user), trim(email)))))) AS UserMailHK FROM table limit 10