Найдите слово в текстовом файле с помощью Pentaho Kettle / Spoon / PDI

Я создаю сценарий сравнения / проверки данных, используя SQL и Spoon PDI. Мы перемещаем данные между двумя серверами и, чтобы убедиться, что у нас есть все данные, у нас есть SQL-запросы, показывающие дату, а затем количество переданных строк.

Пример:
Serv1: 20150522 | 100
Serv2: 20150522 | 100

Затем сценарий попытается объединить эти значения, и в случае неудачи мы получим сообщение об ошибке. Однако мы хотим изменить эту настройку, чтобы записать результат в текстовый файл и на основе этого текстового файла отправить электронное письмо с подтверждением или отказом.

Идея заключается в том, что у нас есть несколько таблиц, которые мы сравниваем, поэтому мы хотим записать все результаты каждого сравнения (восемь) в текстовый файл и на основе окончательного текстового файла отправить результат, а не рассылать спам в свой почтовый ящик. если не удается выполнить несколько шагов.

Формат текстового файла, который мы хотим иметь, - либо совпадение -> отправить электронное письмо, либо несоответствие [имя шага] [дата] -> отправить электронное письмо.

Обычно я не задаю вопрос, если сначала ничего не пробовал, но я искал повсюду в Google, пробовал знания, которые у меня есть сейчас, и ничего не идет так, как я хочу. Я считаю, что это связано с используемой мной логикой.

Я не прошу решения этой проблемы или того, чтобы кто-то сделал это за меня. Я просто прошу совета по правильному пути.


person Paul    schedule 22.05.2015    source источник
comment
Вы сказали, что используемая вами логика вызывает проблему - не могли бы вы отредактировать вопрос, чтобы объяснить, что это за логика? Кроме того, это логика в Pentaho Kettle / Spoon? В вашем вопросе не все ясно.   -  person Jo Douglass    schedule 24.05.2015
comment
Мне нужно записать восемь результатов сравнения в текстовый файл. После того, как все задания завершены и их результат записан в текстовый файл, мне нужно выполнить поиск в текстовом файле на предмет несоответствия ключевых слов. Если Spoon не может найти несоответствие, следует отправить электронное письмо с подтверждением. Если обнаружено несоответствие, следует отправить сообщение об ошибке.   -  person Paul    schedule 26.05.2015
comment
Можете ли вы предоставить образец формата вывода вашего текстового файла, включая также совпадение или несоответствие.   -  person Venkatesh Panabaka    schedule 27.05.2015
comment
Результатом текстового файла в настоящее время является: StepName Match StepName2 Match StepName3 MisMatch 20150529 Мне нужно выполнить поиск в текстовом файле и найти «Несоответствие». Если «Несоответствие» не найдено, отправьте электронное письмо с подтверждением. Если есть «Несоответствие», отправьте сообщение об ошибке. У меня это работает с помощью приложения C #, которое запускает командный файл после Spoon Job, однако мне нужно решение, которое использует только Spoon PDI.   -  person Paul    schedule 29.05.2015


Ответы (1)


Я бы сделал это в преобразовании, где есть шаги для каждого объединения, где результатом каждого шага является имя_сравнения и результат. Это приведет к набору данных в конце, который будет выглядеть примерно так:

имя_сравнения | результат


Союз А | истинный

Union B | ложный

Union C | истинный


Затем вы сможете вывести эти результаты в текстовый файл на другом шаге, чтобы ваш файл результатов был отправлен, независимо от того, прошло задание или нет.

Наконец, вы должны пройти через строку result в потоке, и, если все они верны, вы можете выполнить шаг по электронной почте, чтобы отправить электронное письмо с подтверждением, а если одно из них неверно, отправить « не удалось "электронное письмо.

РЕДАКТИРОВАТЬ:

Чтобы получить дату прохождения или отказа, вы можете получить дату из каждого отдельного результата запроса на объединение, добавив его в запрос следующим образом:

SELECT CURRENT_DATE

Или вы можете использовать шаг Получить информацию о системе в ложке, который имеет несколько способов ввода текущей даты в поток данных. (системная дата фиксированная, диапазон дат начала преобразования, сегодня 00:00:00 и т. д.)

person Shastings    schedule 27.05.2015
comment
Это решение будет работать, однако мне нужна дата, когда проверка данных не удалась. Я беру данные за последние 7 дней и день за днем ​​сравниваю их с количеством. В моем комментарии выше вы можете увидеть более подробное объяснение. - person Paul; 29.05.2015
comment
Я отредактировал ответ, чтобы включить некоторые решения, чтобы добавить дату сбоя. - person Shastings; 29.05.2015