У нас есть условное выполнение запросов в Hive?
Мне нужно объединить две таблицы, TAB_A
и TAB_B
. Когда TAB_A.date1 <= TAB_B.date2
, затем выберите данные из TAB_A
, иначе, если TAB_B.flag = 'V'
, затем выберите данные из TAB_A
, иначе выберите данные из TAB_B
.
Я пробовал оператор case, как упомянуто ниже, но он не работал, выдавая ошибку: "Ошибка при компиляции оператора: FAILED: строка ParseException 7: 0 не может распознать ввод вблизи 'ELSE' '(' 'b' в спецификации выражения "
SELECT
CASE
WHEN ((b.id is NULL) OR (b.flag = 'O' and a.date1 <= b.date1)
OR (b.flag = 'V'))
then
(a.id, a.date1,a.country,a.plt,'O')
else
(b.id,b.date1,b.country,b.plt,b.flag)
END (as id,as date1,as country,as plt,as flag)
from TAB_A a JOIN TAB_B b on a.id=b.id
where a.date1 is NOT NULL;