Соединение за одним столом два раза в улье
Я не понимаю, как реализовать это в 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
Теперь из этих таблиц, если первичные (например, A) и вторичные значения table1 (например, 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 ответ
Преобразован Таблица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 я создал две таблицы
- Соединение Table 1 с преобразованным Table2 и преобразованным Table3 в первичном столбце.
- Разнесите Таблицу1 во вторичном столбце и Соедините результирующую таблицу с преобразованным Таблицей2 и преобразованной Таблицей3 во вторичном столбце.
Соедините две таблицы выше и найдите результаты, основанные на общих значениях ткани.