Сравнение столбца из таблицы со столбцами другой таблицы в улье - PullRequest
0 голосов
/ 17 мая 2018

У меня есть две таблицы улья table1 и table2.В обеих таблицах нет общих столбцов.

table1:

------
| id |
------
| 22 |
| 11 |
| 56 |
| 15 |
------

table2:

-------------
| from | to |
-------------
|  10  | 20 |
|  21  | 35 |
|  40  | 60 |
-------------

Стол столбца id таблицы1 должен быть проверен в таблице2 какк какому диапазону он относится от столбцов 'from' и 'до' таблицы 2.

Ожидаемый результат:

------------------
| id | from | to |
------------------
| 22 |  21  | 35 |
| 11 |  10  | 20 |
| 56 |  40  | 60 |
| 15 |  10  | 20 |
------------------

Попытка с использованием перекрестного соединения с условием where и возможность получения желаемогоВывод (но хочу избежать перекрестного соединения). Также пытался использовать команду «существую», но столкнулся с ошибкой при получении вывода:

Запрос:

select id from table1 t1
where exists(select 1 from table2 t2
where t1.id between t2.from and t2.to) ;

Но при получении ошибки: subquery expression refers to both parent and subquery expressions and is not a valid join condition.

Любые предложения будут полезны в ближайшее время.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вот пошаговое объяснение для получения желаемого результата:

hive> create table table1(id int);
hive> create table table2(from_ int, to_ int);
hive> select * from table1;
OK
22
11
56
15

hive> select * from table2;
OK
10  20
21  35
40  60

Ваш SQL должен выглядеть примерно так, как показано ниже:

select id,from_,to_
from table1 t1
left join table2 t2 on(t1.id between t2.from_ and t2.to_);

Output:
id      from_   to_
22      21      35
11      10      20
56      40      60
15      10      20
0 голосов
/ 17 мая 2018

Поддерживаются сложные выражения в предложении ON, начиная с Hive 2.2.0 (см. HIVE-15211 , HIVE-15251 ).До этого Hive не поддерживал условия объединения, которые не являются условиями равенства.

Итак, единственное решение в Hive <2.2.0, похоже, применимо <code>CROSS JOIN + filter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...