繁体   English   中英

在Informatica中逐步使用带有自定义输出文件名的事务控制

[英]Step-by-Step Use of Transaction Control with Custom Output File Name in Informatica

看来,Informatica开发人员需要在映射中使用事务控制转换的逐步指南,其中,当记录从TC输出时,预期的中断是要创建各种文件。 以一个常见的例子为例,每输出x条记录创建一个新文件,我决定将这个例子放在一起。 在亲自尝试之前,我真的希望我有一个循序渐进的指南,因为花了几天的时间才能使工作正常进行。 正如他们所说,“应该没有那么难,”我同意。 因此,我希望这对其他人有帮助。

问题:您有一个映射,需要输出大量记录。 您的内部客户想要一个可以轻松提供的.csv文件,但他们希望能够将每个.csv文件导入其自己的Excel工作表中。 他们将进行导入,但是不想手动分解大输出文件,因为它已经超出了他们的技术水平,并且没有学习如何使用大容量文件编辑器打开输出文件然后复制并粘贴每个“ x”个记录,其中“ x”是一个Excel友好编号。 因此,他们希望传递给他们的输出数据已经分解为Excel友好的.csv文件,每个文件包含65,000条记录,这接近Excel的行数* 您如何确保文件以65,000条记录的增量自动分解,是否在每个65,000条记录点创建一个具有不同名称的新文件?


*较早的版本。 Excel的限制是每个工作表仅超过65,500行。 然而,最近的版本。 不要。 为了这个示例,我假设您在一家公司工作。 使用较旧的版本。 具有此记录每个工作表限制的Excel的视图。 (最近的Excel版本每个工作表只允许超过一百万行。有关更多信息,请参阅此链接。: https : //superuser.com/questions/366468/what-is-the-the-maximum-allowed-rows-在Microsoft Excel Excel XLS或XLSX中

解:

  1. 首先,您需要将对自定义文件名的支持添加到映射中的文件目标。 通过编辑目标文件来执行此操作,以便将特殊的“ FileName”端口添加到其中。 这可以通过以下方法完成:转到目标中的端口列表,然后单击目标端口列表区域上方和右上角的阴影“ F”。 端口“ FileName”将出现,它的固定长度为255,并带有阴影。 用户不可编辑。 保存目标并签入。然后返回到正在处理的映射。 根据需要刷新视图,以便目标的新“ FileName”端口出现在映射的目标端口列表中。
  2. 将表达式转换添加到映射中,并连接要连接到其的端口,这些端口最终将连接到事务控制转换。
  3. 在表达式转换的“端口”选项卡中编辑端口列表,以添加一个名为“ PhysicalFileName”的字符串变量端口,其长度为255; 使其成为端口列表中的第一个端口。 它的Expression值应该是要用于输出文件的文件名的第一部分。 例如,如果我希望输出文件以“ ABCReport_x.csv”的形式命名,其中x是一个数字,例如1、2、3(例如:“ ABC_Report_1.csv”,“ ABC_Report_2.csv”等) ,这是我要使用的值:

     'ABC_Report_' 

然后添加另一个名为“ var_recordcount”的变量类型整数端口,并为其表达式值指示如下:

    var_recordcount + 1

接下来,添加另一个名为“ var_filenumber”的变量类型字符串端口,并为其表达式值指示如下:

    IIF(MOD(var_recordcount,65000)=0, to_char((var_recordcount/65000)+1), IIF(var_filenumber='','1',var_filenumber))

现在添加另一个名为“ var_new_FN_flag”的变量类型整数端口,并为其表达式值指示如下:

    IIF(var_prev_FN = (PhysicalFileName || var_filenumber), 0, 1)

(请注意,尚未定义'var_prev_FN',但它将作为下一个端口,因此,如果您遇到解析质询,请按原样接受输入的Expression值,请单击OK。)

然后紧接着添加另一个名为'var_prev_FN'的变量类型字符串端口,其长度为255,表达式值为:

    PhysicalFileName || var_filenumber

在该端口之后,添加另一个名为'o_Physical_File_Name'的字符串类型的输出端口,其长度为255,表达式值为:

    PhysicalFileName || var_filenumber || '.csv'

最后,在那之后,添加另一个名为'o_new_FN_flag'的输出端口类型整数,其Expression值为:

    var_new_FN_flag

在这些端口之后,您想看到的进入输出文件的其余端口都应该列出; 注意,我们在端口列表的顶部处理各种变量操作等,并且仅对这些变量进行操作/设置之后才最终列出输出端口。 单击“端口”选项卡中的“应用”和“确定”,以关闭“编辑转换”对话框。

  1. 添加一个事务控制转换,并将步骤3中的表达式转换的所有输出端口连接到它。 事务控制转换应具有两个用于创建输出文件名称的端口:o_new_FN_flag和o_Physical_File_Name。 在事务控制转换的“交易控制条件”框中,其值应为:

     IIF(o_new_FN_flag = 0,TC_CONTINUE_TRANSACTION,TC_COMMIT_BEFORE) 

单击“应用”,然后单击“确定”以关闭用于事务控制转换的“编辑转换”对话框。

  1. 将事务控制转换中的所有端口连接到文件目标(“ o_new_FN_flag”端口除外)。 “ o_Physical_File_Name”端口连接到目标的“ FileName”端口,并且您在事务控制转换中拥有的实质端口将移至目标文件中所需的任何位置。

那应该做。 如果您遵循这些指示并遇到问题,请随时发表。 我将跟踪这篇文章,看看它对其他人的影响。 (有时,我们知道Informatica可以很挑剔。。。) 最后一点:第一个输出文件将包含64,999行。 其余将容纳65,000。 有一种方法可以调整逻辑,以使第一个文件也包含65,000行,但这仅是示例。 添加那条跳跃式跳线只会使一个已经涉及的示例变得毫无意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM