我有一个表,需要将其拆分成多个纯文本表(制表符分隔)。
我的来源中有一个计划使用的字段。例如,我的表包含以下列:
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管理器中的“会话任务”设置:
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转换获取这些字段,并在PREV_OFFICE != OFFICE
时创建用于移动每个文件的外壳脚本指令(否则为null)。指示还可以,但是我有太多空白行。 (顺便说一句,这证明PREV_OFFICE
和OFFICE
字段是正确的)
我试图过滤掉不需要的行,但是验证失败,声称两个流将由一个事务控制来控制。
答案 0 :(得分:1)
在目标上勾选Filename port选项,它将生成一个新目标,其名称与您连接到该目标的输入端口值相同