Сделать БД INSERT на основе метаданных ввода текстового файла

Я разрабатываю ETL и должен выполнить некоторые процедуры для его мониторинга.

В начале я должен сделать INSERT на БД, чтобы создать запись, сообщающую имя файла и дату начала процесса. Этот запрос вернет PK записи, и он должен быть сохранен. Когда ETL этого файла заканчивается, я должен обновить эту запись, информируя ETL об успешном завершении и дате окончания его процесса.

Я использую Text File Input для поиска файлов, которые соответствуют его регулярному выражению, и добавляю его "Дополнительные поля вывода" в поток. Но я не могу найти компонент, который будет работать только для первой записи и выполнит команду SQL для INSERT.

3 ответа

Решение

Вы можете использовать "Определить последнюю строку" и "Фильтровать строки" вместе, так что вы сохраните только одну строку из вашего ввода (отфильтровав только последнюю). Вы вставите сразу после шага Filter Rows.

введите описание изображения здесь

Поскольку вам нужно разделить поток, вам нужно объединить столбец идентификатора с исходными строками ввода текста.

У вас также есть Unique row, Если вы не укажете, по какому полю фильтровать уникальное значение, будет выведена одна и ровно одна строка.

Теперь, если я не понял ваши спецификации, я бы предпочел использовать систему регистрации Kettle. Щелкните в любом месте, выберите свойства во всплывающем окне, затем перейдите на вкладку "Ведение журнала". Он даст вам статус (Запущено / Конец / Остановить /...) и множество дополнительной информации, такой как количество ошибок, прочитанная и записанная строка (просто сообщите PDI, на каком этапе он должен искать эти числа),

Вы можете даже почти в режиме реального времени читать в БД ту же информацию, что и на нижней панели PDI. Просто щелкните нужные поля и нажмите SQL Кнопка для создания файла.

Просто отметьте, что по историческим причинам начальная дата не является начальной датой начала (это дата предыдущего успешного запуска). Дата начала называется Replay date,

А также, если вам нужна эта система для контроля нагрузки и того, нужно ли запускать запуск или нет, позаботьтесь о том, чтобы при внезапном завершении работы системы иногда не было времени записать "Конец" в журнал. Поэтому logdate<now-10minutes надежнее

введите описание изображения здесь

Чтобы сделать что-то только для первой строки потока, используйте шаг "Добавить последовательность" (начиная с 1), а затем шаг "Фильтровать строки" с условием "seq = 1".

Другие вопросы по тегам