Временное решение предложения SAS Hadoop Hive SQL в левом соединении без удаления строк в таблице A - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть 2 таблицы в Hadoop, и я хочу оставить таблицу соединений B в A на основе определенных критериев

Объединение основано на 'ID' (a.ID = b.ID), но я хочу тольковвести 2 столбца «status_date» и «flag_y» из таблицы B, если b.status_date> = a.date

Таблица A:

+------------+-----+--------+
|    date    | ID  | Flag_x |
+------------+-----+--------+
| 01/03/2019 | 100 | x      |
| 01/03/2019 | 101 | x      |
| 02/03/2019 | 102 | x      |
| 02/03/2019 | 103 | x      |
+------------+-----+--------+

Таблица B:

+-------------+---------+--------+
| status_date | field_x | Flag_y |
+-------------+---------+--------+
| 15/03/2019  |     100 | y      |
| 10/01/2019  |     102 | y      |
+-------------+---------+--------+

Желаемый вывод:

+------------+-----+--------+-------------+--------+
|    date    | ID  | Flag_x | status_date | Flag_y |
+------------+-----+--------+-------------+--------+
| 01/03/2019 | 100 | x      | 15/03/2019  | y      |
| 01/03/2019 | 101 | x      |             |        |
| 02/03/2019 | 102 | x      |             |        |
| 02/03/2019 | 103 | x      |             |        |
+------------+-----+--------+-------------+--------+

Код Я пробовал приведенный ниже код, который удаляетстрока для идентификатора 102. В этом случае я хочу сохранить эту строку, но не вводить информацию из таблицы B, поскольку «status_date» предшествует «date» в таблице A. Я предполагаю, что нужно добавить что-то в предложение where ???

Create Table Output As 
Select
a.*
,b.status_date
,b.flag_y

From Table_A as a
Left join Table_B as b
On b.ID = a.ID

Where b.status_date is Null or b.status_date >= a.date

Надеюсь, это имеет смысл, и кто-то может помочь

...