问题描述
我是 hive 的新手,并尝试根据从另一个表 (table_B) 检索到的值使用新列更新表 (table_A)。 table_B 用作分类变量描述的查找表。
例如:table_A
index | field_x | field_y |
---|---|---|
1 | L | S |
2 | H | H |
3 | M | S |
例如:table_B
variable_name | variable_category | variable_category_description |
---|---|---|
field_x | L | 低 |
field_x | M | 中 |
field_x | H | 高 |
field_y | S | 软 |
field_y | H | 硬 |
基于 table_A 和 table_B,我需要获得下表。
index | field_x | field_x_description | field_y | field_y_description |
---|---|---|---|---|
1 | L | 低 | S | 软 |
2 | H | 高 | H | 硬 |
3 | M | 中 | S | 软 |
我尝试在 Hue Hive 编辑器中跟随,只是在开头添加一列。我的编辑器不支持更新语句。
CREATE TABLE table_C AS
SELECT index,field_x,field_y,(SELECT variable_category_description
FROM table_B
where table_B.variable_name = 'field_x' and table_B.variable_category= table_A.field_x
AS field_x_description
FROM table_A
出现以下错误
编译语句时出错:Failed:ParseException line 5:5 无法识别表达式规范中 'SELECT' 'variable_category_description' 'FROM' 附近的输入
非常感谢对此进行修复。
解决方法
您需要使用 table_B 进行两个连接(INNER 或 LEFT)
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
;