У меня есть две таблицы, которые мне нужно объединить с ближайшей временной меткой, но я не могу найти способ сделать это просто в SQL.
Пример данных:
table_1
+---------------------+------+
| timestamp | name |
+---------------------+------+
| 2020-02-11 14:50:00 | xxx |
| 2020-02-11 14:51:00 | yyy |
| 2020-02-11 14:52:00 | zzz |
+---------------------+------+
table_2
+---------------------+-------+
| timestamp | value |
+---------------------+-------+
| 2020-02-11 14:49:50 | 1 |
| 2020-02-11 14:49:58 | 2 |
| 2020-02-11 14:49:59 | 3 |
| 2020-02-11 14:50:50 | 11 |
| 2020-02-11 14:50:58 | 12 |
| 2020-02-11 14:50:59 | 13 |
| 2020-02-11 14:51:50 | 21 |
| 2020-02-11 14:51:58 | 22 |
| 2020-02-11 14:51:59 | 23 |
+---------------------+-------+
Мне нужно получить table_1, оставленное объединением table_2 с ближайшей отметкой времени, при условии, что отметка времени в table_2 всегда немного меньше, чем отметка в table_1 , С этой логикой c я ожидаю получить эту таблицу результатов.
expected result
+---------------------+------+-------+
| timestamp | name | value |
+---------------------+------+-------+
| 2020-02-11 14:50:00 | xxx | 3 |
| 2020-02-11 14:51:00 | yyy | 13 |
| 2020-02-11 14:52:00 | zzz | 23 |
+---------------------+------+-------+
Могу ли я сделать это с помощью запроса SQL, даже если он может быть неэффективным? В противном случае, я думаю о загрузке данных в спарк-фрейм. У нас есть такой алгоритм реализован в спарк?
Спасибо