PDI / Kettle - передача данных из предыдущего прыжка в запрос к базе данных - PullRequest
0 голосов
/ 20 ноября 2018

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

Я хочу проверить базу данных, чтобы увидеть, существует ли конкретная запись (т.е. поставщик). Я хотел бы узнать имя поставщика при чтении плоского файла (.CSV).

Мое первое препятствие - выбор только имени поставщика из 8 полей в CSV

Вторым препятствием является использование имени поставщика в качестве переменной в запросе к базе данных.

Моя третья проблема - какой тип шага использовать для поиска в базе данных.

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

Таблица базы данных (VendorRatings) имеет 30 полей, одно из которых - vendor. CSV также имеет 8 полей, одно из которых также является поставщиком.

Мое лучшее усилие было использовать динамический запрос, используя: ВЫБЕРИТЕ * ИЗ ВЕНДОРТАЦИЙ, ГДЕ ПОСТАВЩИК =?

Как программно назначить желаемое значение "?" в запросе? В частности, как связать вывод определенного поля из ввода текстового файла с "vendor =?" SQL-запрос?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

В связи с тем, что , что

  1. Существует не более одного поставщика на одного поставщика.
  2. Вы должны что-то сделать, если нет совпадения.

Я предлагаю следующий поток: enter image description here

Считайте CSV и посмотрите на каждую строку в таблице ( т.е. :таблица поиска - это таблица SQL, а не файл CSV).И поставить по умолчанию при несоответствии.Я предлагаю что-то действительно видимое, например "--- НЕТ МАТЧ ---".

Затем, в случае несоответствия, фильтр перенаправляет поток на альтернативное действие (здесь: вставка в таблицу SQL).Затем эти два потока слились в нисходящий поток.

0 голосов
/ 20 ноября 2018

Лучшая практика это Stream lookup. Для каждой записи в основном потоке (VendorRating) поиска в справочном файле (CSV) для сведений о поставщике (поля поиска), основанных на его идентификаторе (возможно, его номер или имя или имя + фамилия).

enter image description here

Первое «препятствие» : Как только путь к файлу CSV определен, нажмите кнопку Get field.

В качестве заголовка потребуется первая строка, чтобы узнать имена полей и изучить первую 100 (настраиваемую) запись, чтобы определить типы полей.

Если имя не в первой строке, снимите флажок Header row present, нажмите кнопку Get field, а затем измените имя на панели.

Если имеется несколько строк заголовка или другие сложности, используйте Text file input.

То же самое относится к lookup step: используйте кнопку Get lookup field и удалите ненужные поля.

...