sql - 散列用户 ID 并创建临时表
问题描述
我正在尝试提取样本数据,但需要屏蔽/散列userid
。我需要先构建一个临时表,因为我在 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`;
与其列出此表中的每一列(我都需要它们),有没有办法解决这个问题?
解决方案
老实说,我的建议是明确说明您需要的列。但是,如果您绝对想使用 *,实际上只有一种解决方法。两者都让您按照查询中指定的方式创建表,但用户 ID 哈希使用不重复的列名除外,如下例所示。
CREATE TABLE user.temp_userdata_hashed AS
SELECT *, md5(concat(userid, 'useridGUI')) as useridhash
FROM medicaldata
创建临时表后,您可以使用 ALTER TABLE 命令删除原始 userid 列,然后将 useridhash 重命名为 userid。然后,当您使用 SELECT 查询临时表时,您可以继续使用 *。
推荐阅读
- salesforce - SOQL 中 where 查询中的别名
- python - K-puzzle 的迭代深化搜索
- linux - 有没有办法使用 sed 删除文件每一行之前的所有内容,包括一个制表符(或空格)?
- android - Kotlin - 无法将 URL 加载到 android pie 设备中的 android Web 视图
- android - 如何在没有 api 密钥的情况下使用改造调用 REST api 并将其呈现在 Android 的列表视图中?
- react-native - React Native Flex:1 不填满整个屏幕
- javascript - 即使在开玩笑/酶测试中成功设置后,ReactJS 组件状态也会返回空数据
- amazon-s3 - Vertica S3Export - 带有“PARTITION”子句的数据质量问题
- ionic-framework - 离子原生联系人cordova插件已弃用?任何替代解决方案?
- javascript - 如何仅向 datalist 元素添加唯一选项?