Вы можете попытаться использовать этот поток для генерации первого дня каждого месяца в указанном диапазоне дат.
Общий поток
![enter image description here](https://i.stack.imgur.com/eltpb.png)
Шаг 1 Настройка: запуск
![enter image description here](https://i.stack.imgur.com/oedO3.png)
Шаг 2 Настройка: настройка диапазона дат
На этом шаге укажите даты начала и окончания в качестве параметров конфигурации.
![enter image description here](https://i.stack.imgur.com/WDs6T.png)
Шаг 3 Настройка: создание первых дат для месяцев
При этом используется скрипт Groovy, который приведен ниже.
![enter image description here](https://i.stack.imgur.com/Yf4f1.png)
Groovy скрипт
flowFile = session.get();
if(!flowFile)
return;
DATE_FORMAT = 'yyyy-MM-dd';
startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("start_date"));
endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("end_date"));
allFirstDates = "";
Calendar calendar = Calendar.getInstance();
Set firstDaysOfMonths = new LinkedHashSet();
for (int i = 0; i <= endDate-startDate; i++) {
calendar.setTime(startDate.plus(i));
calendar.set(Calendar.DAY_OF_MONTH, 1);
firstDayOfMonth = calendar.getTime();
if (firstDayOfMonth.compareTo(startDate) >= 0) {
firstDaysOfMonths.add(calendar.getTime().format(DATE_FORMAT));
}
}
firstDaysOfMonths.each {
firstDayOfMonth -> allFirstDates = allFirstDates + firstDayOfMonth + "\n";
}
flowFile = session.putAttribute(flowFile,"all_first_dates", allFirstDates );
session.transfer(flowFile,REL_SUCCESS)
Шаг 4 Конфигурация: Просмотр результата
![enter image description here](https://i.stack.imgur.com/UCY8k.png)
Выход прогона:
При запуске потока атрибут all_first_dates
будет заполняться первыми датами каждого месяца в диапазоне дат.
![enter image description here](https://i.stack.imgur.com/c22N1.png)