如何将一个表中的列名与impala中另一个表中的值进行比较

时间:2017-12-26 08:17:41

标签: hadoop hive impala

首先是主表,第二个是查找表。 我需要将第一个表的列名与第二个表中的值进行比较,如果在第二个表的任何行中找到某个列名,则从第二个表中获取一些字段。

是否可以在黑斑羚中进行?

Table 1

source    |location  |origin   
----------+----------+-------
s1        |india     |xxx

Table 2

extractedfrom|lct       |lkp_value|map_value    
-------------+----------+---------+---------
s1           |location  |india    |india_x
s1           |origin    |xxx      |yyyyyy

我需要有类似的东西 final view required

source    |location  |origin    |location_ll|origin_lkp
----------+----------+----------+-----------+----------
s1        |india     |xxx       |india_x    |yyyyy

1 个答案:

答案 0 :(得分:0)

您应该编辑帖子,以更具体地说明您要执行的操作以及您希望如何加入表格。

根据您提供的示例,以下查询应该适合您。

SELECT t1.source,
       t1.location,
       t1.origin,
       t2_loc.map_value AS location_lkp,
       t2_ori.map_value AS origin_lkp
  FROM Table1 t1
  JOIN Table2 t2_loc ON t1.source = t2_loc.extractedfrom
                    AND t1.location = t2_loc.lkp_value
  JOIN Table2 t2_ori ON t1.source = t2_ori.extractedfrom 
                    AND t1.origin = t2_ori.lkp_value
 WHERE t2_loc.lct = 'location'
   AND t2_ori.lct = 'origin' 

诀窍在于您多次加入Table2 - 您想要匹配的每一列都有一个。