Проблема интеграции данных в Пентахо с загрузкой чайника в зависимости от некоторых условий - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть задание по интеграции данных Pentaho, которое имеет следующие шаги:

Создание шага строки с начальной датой (например, 2010-01-01) и лимитом 10 * 366 = 3660 строк для10 лет.

На следующем шаге есть инкремент для увеличения количества дней.

Следующий шаг использует эту информацию, а именно.начальная дата, лимит и инкремент, чтобы генерировать даты для каждого дня в течение 10 лет, начиная с 2010-01-01, используя функции javascript.

Последний шаг загружает таблицу с сгенерированными датами.

Все это прекрасно работает.

Теперь у меня есть требование, чтобы я не хотел, чтобы эта таблица была статичной с датами только на 10 лет.Если максимальная дата в таблице дат составляет 2 года с сегодняшнего дня, я хочу загрузить в таблицу даты еще 10 лет.

В вышеприведенном примере с 1-й датой загрузки в течение 10 лет с 2010 года я смогу загрузить еще 10 лет в 2018 году, следующие 10 лет в 2028 году и т. Д. И т. Д.

Каким будет лучший способ добиться этого?

Как я могу:

1) Считать максимальную дату из моей таблицы дат?- Я знаю, как это сделать.

2) Используйте дату чтения, чтобы сравнить с сегодняшним днем.И если максимальная дата будет в течение 2 лет с сегодняшнего дня, я заполняю таблицу следующими 10 годами.

Я не знаю, как сделать 2 выше в интеграции данных Pentaho.Буду очень признателен за любые указания на способ решения этой проблемы.

1 Ответ

0 голосов
/ 17 сентября 2018

Вам необходимо прочитать текущую дату (сегодня) в переменной. Например, с шагом Get system info.

Затем вы можете сравнить два поля, максимальную дату и сегодняшний день, с шагом Filter Rows.

Поскольку предыдущий шаг может дать вам более одной строки, вам нужно либо использовать Unique Row (без поля для предоставления), либо Group by (без группировки по полю).

Если какая-то строка проходит, то вы запускаете, вы генерируете 10-летний процесс. Поскольку у вас не может быть прыжка с шага в этот второй Generate row, вы должны использовать Transformation executor для запуска существующего в данный момент преобразования.

enter image description here Теперь, если ваше требование становится немного сложнее, я настоятельно рекомендую вам использовать jobs для организации ваших преобразований.

...