У меня есть задание Pentaho Kettle, которое может загружать данные из числа x таблиц и помещать их в целевые таблицы с другой схемой.Динамически выполнить преобразование по столбцу во время выполнения
Предположим, у меня есть таблица 1, например, так:
Я хочу, чтобы загрузить эту таблицу в таблицу назначения, который выглядит следующим образом:
были переименованы Столбцы, то порядок был изменен, и данные были преобразованы. Переименование и порядок легко управляются с помощью шага Select Values, который можно использовать на этапе ETL Metadata Injection, делая его зависимым от некоторых значений конфигурации, загруженных во время выполнения.
Но если мне нужно выполнить некоторую логику преобразования в некоторых столбцах, исходя из того, куда они идут в целевой таблице, это кажется менее простым.
В моем примере я хочу столбец «COUNTRYNAME», чтобы быть капитализированы, а столбец «Rating» быть этажными (как в изменении действительного числа к предыдущему целочисленного значения).
В то время как я мог бы сделать это, просто вручную добавить преобразование, чтобы выполнить каждый, я хочу, чтобы мое решение быть динамичным, так что это может так же легко запустить колонку «CountryName» через компонент контрольной суммы, или выполнить потолок на "Рейтинг" вместо.
можно легко обернуть эти преобразования в другой трансформации, так что они могут быть запрограммированы и выполняются при необходимости:
Но там, где у меня беда в том, когда я обрабатываю строку данных, мне нужно способ, чтобы иметь возможность сказать:
- Колонка «CountryName» должна быть пропущена через капитализацией преобразование
- Колонка "Рейтинг «должен быть пропущен через пол преобразование
- Колонка (ы)» AnythingElse "должны быть пропущен через SomeOther преобразование
Есть ли способ, чтобы динамически отщепляются столбцы в строке, и выполнить другое преобразование на каждом из них, основанное на некоторых метаданных конфигурации, которые могут быть предоставлены?
Логически, это было бы что-то вроде этого, хотя я подозреваю, что может быть способ справиться с этим, как петли или иной форме динамической трансформации, а не отображение пути для каждого столбца:
Kettle настолько гибок, что кажется, что должен быть способ сделать это, я просто пытаюсь узнать, какие компоненты использовать и как это сделать. Есть ли у экспертов какие-то предложения?
Я имею дело с некоторыми наборами данных biggish здесь (сотни миллионов строк), поэтому неохотно использовать Row Normaliser/Denormaliser или записывать в файл/DB, если это возможно.