Выполняя ETL для набора данных с помощью Talend , я получил столбец "yyyyMM" как "MonthYear" и общее значение "CB" в этом месяце.
Теперь я хочуузнать общее значение CB за предыдущие 3 месяца за каждый месяц.
Соответствующий запрос (самостоятельное объединение):
SELECT
t1.MonthYear, t1.CB
SUM(t2.CB) CB_last3months
FROM
Table1 t1
JOIN Table1 t2
ON t2.MonthYear <= t1.MonthYear
AND t2.MonthYear >= t1.MonthYear-2
GROUP BY t1.Month
Мои данные похожи на:
MonthYear CB
-------+-------
201601 7000
201602 5000
201603 7000
201604 6000
201605 7000
201606 4000
Я хочу, чтобы моя схема вывода была такой:
MonthYear CB CB_last3months
------+-------+-------------------
201601 7000 7000
201602 5000 12000
201603 7000 19000
201604 6000 18000
201605 7000 20000
201606 4000 17000
В SQL я могу сделать это с помощью вложенного подзапроса или с помощью самостоятельного соединения.Как выполнить этот запрос на текущем задании Talend без необходимости сохранять строки в виде таблицы в БД (MySQL)?
Другой вариант - использование компонентов Talend для выполнения оставшихся шагов.
Но есть ли в Talend компоненты, где я могу итерационно извлекать строки и выполнять их агрегирование?Или какой-нибудь способ выполнить объединение и агрегирование в tMap?
Я пытался это сделать до сих пор ... но как мне получить итеративное вычисление "тестового" выражения?
Компонент tMapВыражение