在蜂房中加入一张桌子两次

时间:2016-04-08 04:51:33

标签: hadoop hive hiveql apache-hive

我不知道如何在Hive中实现它。请提出建议。

假设我有像这样的hive表

Table1:
id | primary | secondary
-------------------------
 1 | A       | [B,C]
 2 | B       |  [A]
 3 | C       | [A,B]

Table2
id | primary | Heart | Liver | Kidney
-------------------------------------   
1  | A       | 1.3   | 0     | 0.9
2  | B       | 0     | 3     | 2.3
3  | C       | 0     | 9     | 4.3

Table3
id | medicine | primary 
-----------------------
1  | M1       | A
2  | M2       | A
3  | M3       | B
4  | M4       | B
5  | M1       | B

现在从这些表中,如果table1的主要(例如A)和次要值(例如:B)存在于table2中,并且如果存在至少一个组织,其值大于零(这里肾脏在那里),然后我必须打印以下内容(示例输出)。

primary | direct  | secondary | indirect  | tissue_name
------------------------------------------------------
A       | M1,M2   | B         | M1,M3,M4  | kidney
B       | M1,M3,M4| A         | M1,M2     | kidney
C       | None    | B         | M1,M3,M4  | Liver, Kidney

任何人都可以帮我解决如何在Hive中编写查询。

提前致谢。

1 个答案:

答案 0 :(得分:0)

将表格2转换为以下格式:

Table2
id | primary | Tissues
-------------------------------------   
1  | A       | Heart, Kidney
2  | B       | Liver, Kidney
3  | C       | Liver, Kidney

将表格3转换为以下格式:

Table3
id | primary | drug_list
-------------------------
1  | A       | M1,M2
2  | B       | M1,M3,M4

从表1中,我创建了两个表

  1. 将Table1与转换后的Table2连接,并在主列上转换Table3。
  2. 在辅助列上分解Table1并将结果表与转换后的Table2连接,并在分解的辅助列上转换Table3。
  3. 加入两个表格并根据常见组织值查找结果。