PDI (Pentaho Data Integration) - это ETL сервер, который написан на Java и разрабатывается компанией Pentaho.
Про саму систему написано очень много книг, и, к сожалению, они все на английском. Однако даже в этих книгах я не встретил объяснения, как происходит обработка информации, и как можно быстро разобраться в очень большом множестве инструментов и понять саму идею работы сервера.
Начнем с того, что такое ETL сервер. Прежде всего это сервер, который берет информацию из источника (sourse) , обрабатывает и загружает ее в сток (target). То есть ETL сервер - это посредник, цели у которого - обработать большой поток информации за как можно меньший промежуток времени.
Поток информации в среде PDI представляет из себя таблицу с данными, которая поделена по строкам.
Это логический элемент, в рамках которого можно создавать, изменять потоки информации и загружать потоки информации в целевые стоки (target). За создание потока отвечают шаги в разделе Input, а за целевые стоки - output и, как вариант, шаг “Dummy (do nothing)”. Информация проходит от источника до стока по связям (Hope).
Теперь немного поговорим о движении информации от источника к стоку:
Теперь вспомним о главной цели ETL сервер: обработка информации за максимально короткий промежуток времени. Как это осуществить - разберем на примерах.
Пример первый
Данные поступают медленно из источника. Как сократить время обработки информации?
Нужно выполнять шаги, которые не требуют полного набора информации параллельно с чтением данных. Именно так и происходит в PDI.
Второй пример
Данные поступают из двух источников. Как обработать данные за как можно меньший промежуток времени?
Стратегия первая. Выполнять преобразования над потоком данных последовательно. В случае медленного поступления данных из двух разных источников мы увеличим общее время выполнения задачи, так как сначала мы будем обрабатывать медленный поток, потом снова медленный.
Стратегия вторая. Выполнять потоки параллельно. Это более выигрышная стратегия, так как позволяет более полно использовать вычислительные ресурсы. Параллельность может достигаться как на одной машине, так и на разных. Так PDI и поступает.
Распараллеливает выполнение процессов приведем на картинке для трех процессов:

В принципе, можно и явно задать последовательное исполнение процессов внутри трансформации. Это делает шаг “Block this step until steps finish”.

Выполнение третьего потока информации наступает после полного окончания работы со вторым потоком. То есть можно использовать как первую, так и вторую стратегии. Предпочтительно использовать параллельную обработку информации.
Осталось разобраться с выполнением операций над потоками.
Можно выделить следующие операции над потоками:
Добавление дополнительных полей
Смысл трансформаций добавить информацию в нужный поток. Сами шаги затрагивают только те поля таблицы потока, которые определенны в шаге и не затрагивают остальные поля потока.
Примером таких шагов являются:
Изменение или переименование заголовков таблицы потока
Цель таких шагов заключается в сужении потока или переименовании существующих полей.
Примеры таких шагов:
Разделение потока информации.
Цель таких шагов - разделить поток информации по строкам. Те строки, которые удовлетворяют условиям пойдут по одному пути, а другие - по другому.
Примеры:
Разбирать более сложные операции над потоками пока не вижу смысла, так как это лучше показывать на примере. Могу только добавить, что поскольку потоки информации - это таблицы, то к ним применимы все операции с таблицами внутри трансформации.
Что такое задание? Ну, по большому счету, это более крупный со стороны пользователя логический элемент работы с информацией, который может включать в себя трансформации. Трансформация - это модуль (аналог библиотеки из программирования) для задания. Задания могут включать и другие задания.
Особенности заданий:
Задание начинается с шага “Start” и заканчивается шагом “Success” или в случае неуспеха “Abort job”.
Цель заданий - администрирование и обеспечения обработки информации. Проверка доступности данных, получение данных из источников (получение данных по ftp и прочее), отправка писем в случае неправильного завершения шага, запуск последовательностей трансформаций и заданий. Остальное по мере возможностей будем разбирать на примерах.
Ссылки на материалы: