【问题标题】:Joining one table two times in hive在蜂巢中加入一张桌子两次
【发布时间】:2016-04-08 04:51:32
【问题描述】:

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

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

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 中编写查询。

提前致谢。

【问题讨论】:

  • 我找到了解决方案。谢谢。

标签: hadoop hive hiveql apache-hive


【解决方案1】:

将 Table2 转换为以下格式:

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

将 Table3 转换为以下格式:

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

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

  1. 将 Table1 与转换后的 Table2 和转换后的 Table3 连接到主列上。
  2. 在辅助列上展开 Table1,并在展开的辅助列上将结果表与转换后的 Table2 和转换后的 Table3 连接起来。

将以上两个表连接起来,根据常见的组织值查找结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2017-10-28
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多