Динамически разделенная цель в разных плоских файлах не работает в Informatica - PullRequest
0 голосов
/ 22 января 2019

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

В моем источнике есть поле, которое я планирую использовать. В качестве примера моя таблица имеет следующие столбцы:

ID, CATEGORY, NAME, OFFICE, POSITION, SALARY

Целевые файлы будут иметь столбцы

ID, Name, Category, Position, Salary

и у меня будет один файл в офисе.

Я использую преобразование Sorter для сортировки по OFFICE, CATEGORY, ID

Затем выполняется преобразование выражения, в котором я добавляю столбцы PREV_OFFICE и FILENAME и переменную V_OFFICE. Они определены как:

PREV_OFFICE := ISNULL(V_OFFICE, ' ', V_OFFICE)
V_OFFICE := OFFICE
FILENAME := 'Employees_' || OFFICE || '.xls'

Затем преобразование управления транзакциями с условием управления транзакциями:

IIF(PREV_OFFICE != OFFICE, TC_COMMIT_BEFORE, TC_CONTINUE_TRANSACTION)

И, наконец, цель с полями

ID, Name, Category, Position, Salary, FileName

Пока согласно документации.

Однако он не записывает отдельные файлы для каждого Office.

Это мои настройки для задачи сеанса в WorkFlow manager:

Merge Type: No Merge
Append if Exists: unchecked
Create Target Directory: unchecked
Header Options: Output Filed Name
Header Command: --blank--
Footer Command: --blank--
Output Type: File
Output file directory: $PMTargetFileDir\
Output file: Employees.xls
Reject file directory: $PMBadFileDir\
Reject file: shortcut_to_employees_xls1.bad

Все данные, включая поле FileName, записываются в Employees.xls, (формат правильный), и файлы Employees_<office>.xls не создаются.

Я проверил, и действительно PREV_OFFICE и OFFICE имеют ожидаемые значения (они отличаются, когда есть новое значение для OFFICE).


При втором выпуске каждый файл должен быть отправлен в другое место FTP с использованием таблицы со следующими столбцами:

OFFICE, FTP_SERVER, FTP_USER, FTP_PASSWD, FTP_PATH

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

Я попытался отфильтровать нежелательные строки, но проверка не удалась, утверждая, что два потока будут управляться одним Управлением транзакциями.

1 Ответ

0 голосов
/ 22 января 2019

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

...