РЕШЕНИЕ:
- Сначала вам нужно будет добавить поддержку пользовательского имени файла для целевого файла в сопоставлении. Сделайте это, отредактировав целевой файл так, чтобы к нему был добавлен специальный порт FileName. Это можно сделать, перейдя к списку портов в целевом объекте и щелкнув заштрихованную букву «F» чуть выше и в правом верхнем углу области списка целевых портов. Появится порт «Имя файла», он будет иметь фиксированную длину 255 и будет затенен. Это не редактируется пользователем. Сохраните цель и зарегистрируйте ее. Затем вернитесь к отображению, над которым вы работаете. При необходимости обновите представление, чтобы новый целевой порт FileName появился в списке целевых портов в сопоставлении.
- Добавьте преобразование выражения в свое сопоставление и подключите порты, которые вы хотите подключить к нему, которые в конечном итоге будут подключены к преобразованию управления транзакциями.
Отредактируйте список портов на вкладке «Порты» в преобразовании выражения, чтобы добавить порт строковой переменной с именем «PhysicalFileName» и длиной 255; сделайте его первым портом в списке портов. Его значение Expression должно быть первой частью имени файла, которое вы хотите использовать для выходных файлов. Например, если я хочу, чтобы мои выходные файлы назывались в форме «ABCReport_x.csv», где x — число, такое как 1, 2, 3 (например: «ABC_Report_1.csv», «ABC_Report_2.csv» и т. д.) , это значение, которое я бы использовал:
'ABC_Report_'
Затем добавьте еще один целочисленный порт переменного типа с именем 'var_recordcount' и для его значения Expression укажите следующее:
var_recordcount + 1
Затем добавьте еще один порт строки типа переменной с именем 'var_filenumber' и для его значения Expression укажите следующее:
IIF(MOD(var_recordcount,65000)=0, to_char((var_recordcount/65000)+1), IIF(var_filenumber='','1',var_filenumber))
Теперь добавьте еще один целочисленный порт переменного типа с именем 'var_new_FN_flag' и для его значения Expression укажите следующее:
IIF(var_prev_FN = (PhysicalFileName || var_filenumber), 0, 1)
(Обратите внимание, что «var_prev_FN» еще не определен, но он будет следующим портом, поэтому нажмите «ОК», если вы получите запрос на синтаксический анализ, приняв введенное значение выражения как есть.)
А затем сразу после этого добавьте еще один строковый порт переменного типа с именем «var_prev_FN» с длиной 255 и значением Expression:
PhysicalFileName || var_filenumber
После этого порта добавьте еще один выходной порт строки типа с именем «o_Physical_File_Name» длиной 255 и значением Expression:
PhysicalFileName || var_filenumber || '.csv'
Наконец, после этого добавьте еще одно целое число типа выходного порта с именем «o_new_FN_flag» со значением Expression:
var_new_FN_flag
После этих портов должны быть перечислены остальные порты, которые вы хотите видеть в выходных файлах; обратите внимание, что мы заботимся о различных манипуляциях с переменными и т. д. в верхней части списка портов и только в конце перечисляем выходные порты после манипулирования/установки этих переменных. Нажмите «Применить» и «ОК» на вкладке «Порты», чтобы закрыть диалоговое окно «Редактировать преобразования».
Добавьте преобразование управления транзакциями и подключите к нему все порты вывода из преобразования выражения на шаге 3. Преобразование управления транзакциями должно иметь два порта, созданных для управления именем выходного файла: o_new_FN_flag и o_Physical_File_Name. В поле «Условие управления транзакциями» преобразования управления транзакциями его значение должно выглядеть так:
IIF(o_new_FN_flag = 0,TC_CONTINUE_TRANSACTION,TC_COMMIT_BEFORE)
Нажмите «Применить», затем «ОК», чтобы закрыть диалоговое окно «Редактировать преобразования» для преобразования управления транзакциями.
- Подключите все порты в преобразовании управления транзакциями к целевому файлу, кроме порта 'o_new_FN_flag'. Порт «o_Physical_File_Name» соединяется с портом «FileName» целевого объекта, а основные порты, которые у вас есть в преобразовании управления транзакциями, направляются туда, куда им нужно в целевом файле.
Это должно сработать. Если вы будете следовать этим указаниям и у вас возникнут проблемы, не стесняйтесь публиковать. Я буду отслеживать этот пост, чтобы увидеть, как он идет для других. (Иногда Informatica может, как мы знаем, быть очень привередливой....). Последнее замечание: первый выходной файл будет содержать 64 999 строк. Остальные вмещают 65 000. Есть способ настроить логику так, чтобы первый файл также содержал 65 000 строк, но это пример. Добавление этой части прыгающих надежд только испортит уже задействованный пример.
person
Matt Campbell
schedule
04.06.2015