Вставка новых записей на основе даты в pentaho

#etl #pentaho #data-warehouse #pentaho-spoon #pentaho-data-integration

#etl #pentaho #хранилище данных #pentaho-ложка #pentaho-интеграция данных

Вопрос:

я хотел спросить, возможно ли это в pentaho

Вчера, 26/02/2021, у меня были данные, похожие на это, START_DATE, ВЗЯТЫЕ ИЗ SYSDATE

 ID|CODE|NAME|MARKS|START_DATE|END_DATE
1|A01|KUMAR|90|26/02/2021|NULL
2|A02|RAJESH|80|26/02/2021|NULL
3|A03|SINGH|70|26/02/2021|NULL
 

Итак, предположим, что СИНГХ с КОДОМ A03 получил лучшие оценки (90) 27/02/2021, так что это будет выглядеть так

 ID|CODE|NAME|MARKS|START_DATE|END_DATE
1|A01|KUMAR|90|26/02/2021|NULL
2|A02|RAJESH|80|26/02/2021|NULL
3|A03|SINGH|70|26/02/2021|27/02/2021
4|A03|SINGH|90|27/02/2021|NULL
 

Поскольку СИНГХ имеет разные значения в своих МЕТКАХ, старая запись СИНГХА будет соответствовать своей END_DATE, а новая запись СИНГХА с его последними МЕТКАМИ будет иметь START_DATE в день вставки записи, и его END_DATE по-прежнему будет нулевым.Таким образом, задание увидит, есть ли какие-либо различия в его значениях, тогда, если есть какие-то различия, это означает, что строка имеет «обновленные» значения и последние из источника, которые будут вставлены.
Могу ли я реализовать это в pentaho?

Мои задания Pentaho

Ответ №1:

Вы можете сделать это легко, используя шаги «Обновить» и «Вставить / обновить» всего за одно преобразование в Pentaho data integration.

введите описание изображения здесь

Пример можно посмотреть здесь

Комментарии:

1. Но что, если значение, которое не изменилось? Например, если у СИНГХА все еще есть отметки 80, поэтому он ничего не вставит или не обновит. Если SINGH по-прежнему имеет те же значения из источников, поэтому между источниками и целью нет различий, запись ничего не вставит или не обновит

2. Да, эти записи не будут вставлены. Я уже рассматриваю этот шаг.

3. Кстати, Runa, я пробовал твою, и это выдало мне ошибку, поскольку, если я изменю значение SINGH, при вставке идентификатора новых записей все равно будет старый идентификатор SINGH, который равен 3. Это должно было быть 4, как мне это сделать на этапе вставки? Когда я удаляю поля обновления на шаге вставки новой строки, я получаю только null, а дата окончания также не получила сегодняшнюю дату.

4. В моем преобразовании у меня есть идентификатор вставки из входных записей. Итак, если ID = 3 в новой записи, то 3 будет вставкой для СИНГХА, если ID = 4, то 4 будет вставкой. Это полностью зависит от ваших записей. Если вы хотите, чтобы идентификатор автоматически увеличивался в таблице вашей базы данных, вы можете легко установить столбец ID в качестве автоматического увеличения в любой базе данных. И в этом случае удалите идентификатор с шага «Вставить новую строку», поскольку это будет автоматически обрабатываться вашей базой данных.

5. Хорошо, это зависит от структуры таблицы, и я попытался использовать get system info в своей работе (я предоставил ссылку выше), системная информация я попытался получить системную дату для нового значения end_date, и это не сработало, может быть, вы знаете почему?