首页 > 解决方案 > 在 Informatica 中不起作用的不同平面文件中的动态分离目标

问题描述

我有一个表,我需要将其动态拆分为多个纯文本表(制表符分隔)。

我的来源有一个我打算使用的字段。例如,我的表有以下列:

ID, CATEGORY, NAME, OFFICE, POSITION,SALARY

目标文件将具有列

ID, Name, Category, Position,Salary

每个办公室我都会有一份文件。

我正在使用排序器转换按OFFICE, CATEGORY,排序ID

然后是表达式转换,我在其中添加列PREV_OFFICEandFILENAME和变量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

到目前为止,根据文档。

然而,它并没有为每个办公室写下单独的文件。

这些是我在工作流管理器中对会话任务的设置:

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

目前我正在使用查找转换来获取这些字段,并在何时创建PREV_OFFICE != OFFICE用于移动每个文件的 shell 脚本指令(否则为 null)。说明没问题,但我得到了太多的空白行。(顺便说一句,这证明了PREV_OFFICEOFFICE领域是正确的)

我试图过滤掉不需要的行,但验证失败,声称两个流将由一个事务控制控制。

标签: informaticainformatica-powercenter

解决方案


在您的目标上勾选 Filename port 选项,这将生成一个与您连接到那里的输入端口值具有相同文件名的新目标


推荐阅读