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

有可能在黑斑羚中这样做吗?

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

最佳答案

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

给定您提供的示例,以下查询应适用于您。

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-您希望匹配的每一列都加入一个。

关于hadoop - 如何在Impala中将一个表中的列名与另一个表中的值进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47975760/

10-16 03:22