在hive中两次连接一个表

rmbxnbpk  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(530)

我不知道如何在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

现在从这些表中,如果表1的主要值(例如a)和次要值(例如:b)出现在表2中,并且如果至少有一个组织的值大于零(这里是肾脏),那么我必须打印以下内容(示例输出)。

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中写查询吗。
提前谢谢。

pn9klfpd

pn9klfpd1#

将表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与主列上的转换表2和转换表3连接起来。
分解次列上的表1,并将结果表与分解次列上的转换表2和转换表3连接起来。
将上述两个表连接起来,并根据常见的组织值查找结果。

相关问题