Используя PDI (Kettle) я заполняю начальный этап своей базы данных, используя шаги CSV Input
и Table Output
. Это прекрасно работает, однако я также хочу убедиться, что только что вставленные данные соответствуют определенным критериям, например. поля, не равные NULL, и т. д.
Обычно это работа для ограничений базы данных, однако мы хотим сохранить данные в базе данных, даже если они неисправны (в целях отладки. Попытка отладить файл .csv - это боль...). Поскольку это всего лишь промежуточная таблица, в любом случае это не вызывает проблем с целостностью и т. д.
Именно для этого я написал несколько операторов SELECT Count(*) as test123 ...
, которые мгновенно показывают, что что-то не так, и с которыми легко работать (если значение test123 равно 0, все в порядке, иначе задание нужно прервать).
Я выполняю эти инструкции, используя шаг Execute SQL Statements
в преобразовании PDI. Я ожидал, что результат будет автоматически передан в мой поток данных, поэтому я также использовал шаг Copy rows to result
, чтобы передать его выполняющемуся заданию.
Это точка, где проблема, скорее всего, находится. Я думаю, что результат оператора SELECT не был автоматически передан в мой поток данных, потому что, когда я выполняю Simple evaluation
в основном задании, используя переменную ${test123}
(которая, как я думал, будет неявно создана при выполнении SELECT Count(*) as test123 ...
), я никогда не получаю ожидаемого результата.
Я не смог найти никаких подсказок к этой проблеме в документации PDI, поэтому я надеюсь, что кто-то здесь имеет некоторый опыт работы с PDI и может помочь. Если что-то все еще неясно, просто намекните на это, и я отредактирую пост с дополнительной информацией.
с уважением
Изменить: это простая модель моей основной работы:
Пуск --> Загрузить данные (преобразование) --> Проверить данные (преобразование) --> Простая оценка --> ...
Execute SQL Statements
подключается к базе данных и выполняет оператор. Это делается в отдельном преобразовании, которое вызывается заданием. - person daZza   schedule 27.08.2014Select values
, PDI выдает ошибку:Couldn't find field '${test123}' in row!
, которая, кажется, подтверждает мое мнение о том, что результаты не автоматически помещаются в поток данных. - person daZza   schedule 27.08.2014