У меня есть 2 стола Impala.
1-я таблица T1 (есть дополнительные столбцы, но меня интересует только тип даты и дня в качестве дня недели):
date day_type
04/01/2020 Weekday
04/02/2020 Weekday
04/03/2020 Weekday
04/04/2020 Weekend
04/05/2020 Weekend
04/06/2020 Weekday
2-я таблица T2:
process date status
A 04/01/2020 finished
A 04/02/2020 finished
A 04/03/2020 finished
A 04/03/2020 run_again
Используя запросы Impala, я должен получить максимальную дату из второй таблицы T2 и получить ее статус. Согласно приведенной выше таблице 04/03 является максимальной датой. Если статус заканчивается 04/03, то мой запрос должен вернуть следующую доступную дату дня недели с T1, которая 04/06/2020. Но если статус run_again
, то запрос должен вернуть ту же дату. В приведенной выше таблице 04/03 имеет run_again
, и когда мой запрос выполняется, вывод должен быть 04/03/2020, а не 04/06/2020. Обратите внимание, что на дату возможно более одного статуса. Например, 04/03/2020 может иметь строку с готовым статусом, а другую с повторным выполнением статуса. В этом случае повторный запуск должен иметь приоритет, а в запросе должна быть дата 03.03.2020 в качестве даты вывода
Что я пробовал до сих пор: я запустил подзапрос из второй таблицы и получил максимальную дату и ее состояние. Я попытался запустить case в моем основном запросе и дал T1 в качестве подвыбора в выражении Case, но он не работает.
Можно ли добиться этого с помощью запроса Impala?