问题描述
我有1个文件夹,其中有4个文件,分别为sales_jan,sales_feb,debt_jan,debt_feb
。我为每个销售和债务创建了特定的工作。问题是,如果我以前只为sales_jan
运行过作业,然后又出现了sales_feb
,那么我就不想再读一次sales_jan
,我只想读最新的添加的文件尚未处理。为了读取文件,我通过了特定文件的模式(例如sales_*
),但是如果我这样使用它,则该阶段将再次处理sales_jan
,尽管它已经存在。我想将已被读取的文件移到另一个文件夹中。我该如何在ibm datastage
中做到这一点?如果没有办法,您对我的问题有何建议?任何想法将不胜感激。
解决方法
最简单的解决方案是使用作业后子例程(在Linux / UNIX上为ExecSH,在Windows上为ExecDOS)将文件移动到其他位置。 由于在顺序文件阶段使用通配符,因此在处理工作仅处理部分文件的情况时,您将不得不变得更加聪明。我宁愿使用循环顺序编写此代码,一次处理一个文件,以便可以按文件处理移动。
,您可以为作业已经读取的每个文件创建一个标志。例如,为每个文件添加一个maxdate字段。当第一个文件的最大日期小于第二个文件或新的文件时,然后读取最新的文件。可以通过在序列或transformer中使用简单的linux命令来完成。就像之前提到的雷一样