如何使用 CTE 更新 table - Hive

How to use a CTE to update a table - Hive

我是 Hive 的新手,正在尝试根据从另一个 table (table_B ). table_B 用作分类变量描述的查找 table。

例如: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 Low
field_x M Medium
field_x H High
field_y S Soft
field_y H Hard

基于 table_A 和 table_B 我需要获得以下 table.

index field_x field_x_description field_y field_y_description
1 L Low S Soft
2 H High H Hard
3 M Medium S Soft

我尝试在 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

我收到以下错误

编译语句时出错:失败:ParseException 行 5:5 无法识别表达式规范 'SELECT' 'variable_category_description' 'FROM' 附近的输入

非常感谢对此问题的修复。

您需要两个连接(INNER 或 LEFT)与 table_B

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
;