我不知道如何在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中写查询吗。
提前谢谢。
1条答案
按热度按时间pn9klfpd1#
将表2转换为以下格式:
将表3转换为以下格式:
从表1中,我创建了两个表
将表1与主列上的转换表2和转换表3连接起来。
分解次列上的表1,并将结果表与分解次列上的转换表2和转换表3连接起来。
将上述两个表连接起来,并根据常见的组织值查找结果。