hadoop - Hive - 将查找表数据合并到现有表以有效地创建新表
问题描述
我正在尝试根据从另一个表 (table_B) 检索到的值使用新列更新表 (table_A)。table_B 用作分类变量描述的查找表。在表 A 中有超过 100 列。
例如:table_A
指数 | 字段_x | field_y |
---|---|---|
1 | 大号 | 小号 |
2 | H | H |
3 | 米 | 小号 |
例如:table_B
变量的名称 | 变量类别 | 变量类别描述 |
---|---|---|
字段_x | 大号 | 低的 |
字段_x | 米 | 中等的 |
字段_x | H | 高的 |
field_y | 小号 | 柔软的 |
field_y | H | 难的 |
基于 table_A 和 table_B 我需要获得下表。
指数 | 字段_x | field_x_description | field_y | field_y_description |
---|---|---|---|---|
1 | 大号 | 低的 | 小号 | 柔软的 |
2 | H | 高的 | H | 难的 |
3 | 米 | 中等的 | 小号 | 柔软的 |
我尝试了以下操作,但是表中有 100 个左连接和数百万个数据,这不起作用。有人可以建议我一种更有效的方法来执行此操作。有没有一种方法可以在没有每个属性描述的左连接的情况下执行此操作。
CREATE TABLE table_C AS
SELECT a.index,
a.field_x,
x.variable_category_description AS field_x_description,
a.field_y,
y.variable_category_description AS field_y_description
FROM table_A
LEFT JOIN table_B x ON x.variable_name = 'field_x'
and x.variable_category = a.field_x
LEFT JOIN table_B y ON y.variable_name = 'field_y'
and y.variable_category = a.field_y
;
解决方案
推荐阅读
- python - 连接 numpy 数组和 keras 层
- javascript - 推送数组中的值以匹配特定格式
- python - 将数据框列表附加到python中的数据框列表
- excel - 将所有列值与 Excel 中的单个单元格进行比较
- r - R中的简单绘图
- python - Python pytz:显示时区的实际时间
- ios - 检测对 UITableViewCell 内的 UIViewCollectionCell 的点击
- api - 如何在具有不同查询参数的多个匹配 URL 上获取特定存根
- java - C#中3DES加密的java等价物是什么
- java - 从文件中解码“编译的 Java 类数据,版本 52.0”文本