Используйте параметры!
Когда вы определяете соединение, вы видите маленький знак S
в синем ромбе справа от поля ввода Database Name
.Это означает, что вместо написания имени базы данных вы можете ввести параметр.
Когда вы это делаете в первый раз, это немного сложно.Так что следуйте процедуре шаг за шагом, даже если у вас возникнет желание сразу запустить ./kitchen.sh, который читает файл, содержащий строку для каждого клиента.
1) Параметризовать преобразование. Щелкните правой кнопкой мыши в любом месте, выберите Properties
, затем Parameters
, заполните таблицу:
- Row1: Col1 (параметр) = HOST_NAME, Col2 (значение по умолчанию) = имя хоста для Cust1
- Row2: Col1 = DATABASE_NAME, Col2 = имя базы данных для Cust1
- Row3: Col1 = PORT_NUMBER, Col2 = имя базы данных для Cust1
- Row4: Col1 = USER_NAME, Col2= имя базы данных для Cust1
- Row5: Col1 = PASSWORD, Col2 = имя базы данных для Cust1
Затем перейдите к определению Database connection
(На левой панели, вкладка View) и на панели настроек:
- Имя хоста: $ {HOST_NAME} - имя переменной с «$ {» до и «$» после
- Имя базы данных:$ {DATABASE_NAME} - не вводите имя, нажмите Crtl + SPACE
- Номер порта: $ {PORT_NUMBER}
- Имя базы данных: $ {USER_NAME}
- Имя базы данных: $ {PASSWORD}
Проверьте соединение.Если это действительно так, попробуйте выполнить тестовый прогон.
2.Проверьте параметры. Когда вы нажимаете кнопку run
, Spoon запрашивает какое-то значение Run option
(Если вы в прошлом отмечали «Больше не показывать меня», используйте раскрывающийся список рядом с Run menu
).
Измените значения параметров для Cust2.И проверьте, работает ли он для другого клиента.
Измените его в столбце Value
и столбце Default value
.Вскоре вы поймете разницу, на данный момент проверьте, работает ли она с обоими.
3.Проверьте это в командной строке. Используйте pan из командной строки .
Синтаксис должен выглядеть следующим образом:
./pan.sh -file=your_transfo.ktr -param=HOST_NAME:cust3_host -param=DATABASE_NAME:cust3_db....
На этом этапеу вас есть небольшое количество проб и ошибок, потому что синтаксис между =
и :
заметно варьируется в зависимости от ОС и версии PDI.Но вы должны пройти 4-6 испытаний.
4.Выполните задание В соответствии с парадигмой параллельных вычислений PDI, вы не можете использовать шаг Set variable
в одном преобразовании.Вам нужно выполнить задание с двумя преобразованиями: первое читает файл csv и определяет переменные с шагом Set variable
.Второе - преобразование, которое вы только что разработали и протестировали.
Не ожидайте, что оно будет запущено в первом испытании.Некоторые версии PDI содержат ошибки и требуют, например, очистки значения по умолчанию параметров в преобразовании.Вам помогает шаг Write to log
, который запишет поле в журнал вызывающего задания.Конечно, вам нужно сначала поместить параметры / переменные в поле с шагом Get variable
.
В частности, не начинать с полного списка клиентов! Настроить системус 2-3 клиентами раньше.
Напишите полный список клиентов в вашем CSV и запустите.
Создайте SELECT COUNT (customer) для вашей окончательной загрузки.Это важно, потому что вы, вероятно, захотите загрузить как можно больше клиентов, чтобы продолжить процесс даже в случае сбоя.Это поведение по умолчанию (в моей лучшей памяти), поэтому вы, вероятно, не заметите сбой в журнале, если есть большое количество клиентов.
5.Установите задание
В принципе, это всего лишь ./kitchen.sh
.
Однако, если вы хотите автоматизировать загрузку, вам будет сложно проверить, что ничего не пошлонеправильно.Поэтому откройте преобразование и используйте System date (fixed)
шага Get System Info
и запишите результат с данными клиента.В качестве альтернативы вы можете получить эту дату в основном задании и передать ее вместе с другими переменными.
Если у вас есть проблемы с созданием нового столбца в базе данных, сохраните список клиентов, загруженных по дням, в другой таблице, в файле или отправьте его вам по почте.Исходя из моего опыта, это единственный практический способ ответить пользователю, который утверждает, что его крупнейший клиент не был загружен деревом несколько недель назад.