Как сделать динамическую итерацию диапазона дат в Talend? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть MinLoginTime и MaxLoginTime, которые хранятся в 2 переменных глобальной карты:

globalMap.put("MinLoginTime","2017-10-24") //ignore the datetime format, but it a date
globalMap.put("MaxLoginTime","2018-04-26")

Я хочу поставить месячную итерацию и получить записи. то есть здесь мы видим, что в примере 7 месяцев: 10,11,12,1,2,3,4

Я хочу создать такие даты:

FromDate    ToDate
2017-10-01  2017-10-31
2017-11-01  2017-11-30
2017-12-01  2017-12-31
...
2018-04-01  2018-04-30

Затем нужно перебрать каждую из этих строк и сделать что-нибудь (пока воспользуемся tLog)

Может ли кто-нибудь помочь, пожалуйста, по поводу того, какие компоненты Talend можно использовать здесь для генерации диапазонов дат, где их хранить и как их повторять, чтобы что-то сделать?

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете достичь этого довольно легко, используя комбинацию компонентов Talend и некоторого Java-кода. У Talend есть хорошая коллекция функций манипулирования датами.

enter image description here

Во-первых, сохраните ваши глобальные переменные даты в виде Date.

globalMap.put("MinLoginTime", TalendDate.parseDate("yyyy-MM-dd", "2017-10-24"))

Затем tLoop_1 зацикливается на все месяцы между минимальной и максимальной датами. Этот код получает количество месяцев между двумя датами:

TalendDate.diffDate((Date)globalMap.get("MaxLoginTime"),(Date)globalMap.get("MinLoginTime"),"MM")

tJava_3 просто хранит дату текущей итерации в глобальной переменной CURRENT_DATE. Это сумма минимальной даты и текущего значения итерации (от 0 до N месяцев).

globalMap.put("CURRENT_DATE", TalendDate.addDate((Date)globalMap.get("MinLoginTime"), (Integer)globalMap.get("tLoop_1_CURRENT_VALUE"), "MM"))

tFixedFlowInput_1 определяет 2 Date столбца: FromDate и ToDate, чтобы получить первый и последний день месяца текущей итерации соответственно.

TalendDate.getFirstDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
TalendDate.getLastDayOfMonth((Date)globalMap.get("CURRENT_DATE"))

Проверка TalendDate ссылка на класс для всех методов манипулирования датами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...