Pentaho kettle: как настроить тесты для трансформаций/заданий?
Я использую Pentaho Kettle довольно долгое время, и ранее преобразования и задания, которые я сделал (используя ложку), были довольно простой загрузкой из db, переименования и т.д., ввода данных в другой db. Но теперь я делаю преобразования, которые делают несколько более сложные вычисления, которые я сейчас хотел бы как-то проверить.
Так что я хотел бы сделать:
- Настройка некоторых тестовых данных
- Запустите преобразование
- Проверить данные результата
Один из вариантов, вероятно, заключается в том, чтобы выполнить тестовое задание на Kettle, которое проверит трансформацию. Но поскольку мои преобразования связаны с проектом java, я бы предпочел запустить тесты из jUnit. Поэтому я рассмотрел возможность создания теста jUnit, который:
- Настройка тестовых данных (с использованием dbunit)
- Запустите преобразование (используя команду kitchen.sh из командной строки)
- Проверить данные результата (используя dbunit)
Однако этот подход потребует наличия тестовых баз данных, которые не всегда доступны (оракул и т.д., дорогие/устаревшие db). Я бы предпочел, чтобы, если бы я мог издеваться или передавать некоторые данные проверки заглушки на мои шаги ввода каким-то образом.
Любые другие идеи о том, как проверить трансформации чайника Pentaho?
Ответы
Ответ 1
есть jira где-то на jira.pentaho.com(у меня нет его руки), который запрашивает именно это, но, увы, он еще не реализован.
Итак, у вас есть правильное решение - я также добавлю дженкинсов и ant script, чтобы связать все это вместе. Я сделал аналогичную вещь с тестированием отчетов - на самом деле у меня было задание pentaho, данные были выполнены, затем он выполнил отчет, а затем сравнил вывод с известным выходом и сообщил об ошибке/ошибке.
Ответ 2
Если вы отделите свои задания на чайник на две фазы:
- загрузить данные в поток
- данные процесса и обновления
Вы можете использовать строки копирования для вывода в конце ваших данных нагрузки на шаге потока и получать строки из результата, чтобы получить строки в начале шага процесса.
Если вы сделаете это, вы можете использовать любые средства для загрузки данных (преобразование kettle, dbunit, вызванное из ant script), и можете макетировать любые нужные вам таблицы базы данных.
Я использую это для тестирования некоторых сценариев ETL, которые я написал, и он работает нормально.
Ответ 3
Вы можете использовать шаг проверки достоверности данных. Конечно, это не полный пакет unit test, но я думаю, что иногда будет полезно быстро проверить целостность данных.
Вы можете запустить сразу несколько тестов.
Для более "серьезного" теста я порекомендую @codek answer и выполнит ваши чайники под Jenkins.
![data validator step screenshot]()