У меня есть две таблицы (таблица a и таблица b) в Hive.
Таблица a является таблицей инициализации (полной). Таблица b является дельта-таблицей с последними обновлениями (эта таблица имеет те же столбцы и еще 5 столбцов, включая столбец отметки времени для последних обновлений).
Я хочу создать последнее представление (объединение между полными + delta) из двух таблиц для получения последних обновлений.
1- Первый шаг, который я сделал, - это выбрать строки с максимальным (временная метка) из таблицы b (delta) для последних обновлений
2- Затем я использовал его как подзапрос во внутреннем соединении:
SELECT full.*, delta.*
FROM table a FULL
INNER JOIN (SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY timestamp
DESC) as rn
FROM b) delta
ON f.id = d.id and d.rn = 1
Проблема в том, что мне нужно указать столбцы, которые я хочу использовать в select, и у меня будут дублированные столбцы с разными значения при обновлении таблицы b.
Мне нужно условие, чтобы всегда выбирать столбцы из таблицы a и заменять столбцы в таблице a столбцами в таблице b, если значения в таблице b отличаются от значений в таблице a.
Любые решения, пожалуйста?