【发布时间】:2019-01-23 04:38:43
【问题描述】:
我有一个表格,我需要将其动态拆分为多个纯文本表格(制表符分隔)。
我的来源有一个我打算使用的字段。例如,我的表有以下列:
ID、CATEGORY、NAME、OFFICE、POSITION、SALARY
目标文件将包含列
ID、Name、Category、Position、Salary
每个办公室都有一份文件。
我正在使用排序器转换按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
到目前为止,根据文档。
但它并没有为每个办公室写下单独的文件。
这些是我在工作流管理器中对会话任务的设置:
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_OFFICE 和 OFFICE 字段是正确的)
我试图过滤掉不需要的行,但验证失败,声称两个流将由一个事务控制控制。
【问题讨论】:
-
您想将数据移动到文件或表中吗?
标签: informatica informatica-powercenter