散列用户ID并创建临时表

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

我正在尝试提取示例数据,但需要屏蔽/散列userid。我需要首先构建一个临时表,因为我正在Zeppelin中工作并且输出被截断,所以我正在构建一个临时表,以便可以从第3方工具(Razor SQL)查询数据。

这是我用来屏蔽/散列userid的内容:

CREATE TABLE user.temp_userdata_hashed AS
SELECT *, md5(concat(userid, 'useridGUI')) as userid
FROM medicaldata

这在没有CREATE TABLE的情况下有效,但是当我包含CREATE TABLE时出现此错误:

org.apache.spark.sql.AnalysisException: Found duplicate column(s) in the table definition of `user`.`temp_userdata_hashed`: `userid`;

而不是列出此表中的每一列(我都需要它们),有没有解决的办法?

sql apache-zeppelin
1个回答
1
投票

老实说,我的建议是只明确说明您需要的列。但是,如果您绝对要使用*,则实际上只有一种解决方法。两者都要求您按照查询中的指定创建表,但使用非重复的列名作为userid哈希除外,如下例所示。

CREATE TABLE user.temp_userdata_hashed AS
SELECT *, md5(concat(userid, 'useridGUI')) as useridhash
FROM medicaldata

一旦创建了临时表,您就可以使用ALTER TABLE命令删除原始的userid列,然后将useridhash重命名为userid。然后,当您使用SELECT查询临时表时,可以继续使用*。

© www.soinside.com 2019 - 2024. All rights reserved.