【问题标题】:Hashing user ID's and creating a temp table散列用户 ID 并创建临时表
【发布时间】:2020-03-09 12:49:24
【问题描述】:

我正在尝试提取样本数据,但需要屏蔽/散列 userid's。我需要先构建一个临时表,因为我在 Zeppelin 中工作并且输出被截断,所以我正在构建一个临时表,以便我可以从 3rd 方工具 (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】:

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

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

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

    【讨论】:

    • 是的,这就是我最终做的,但想知道是否有其他方法解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2011-01-29
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多