我有一个要求,即我要检查CSV格式的源文件是否只有标题行,即只有1行,那么我需要使信息工作流失败。Informatica安装在Windows服务器中,因此只支持Command任务,而不支持Unix或bash。我正在使用下面的代码,在工作流中使用命令任务来计算源文件中的行数。
对于/f";usebackq"%%b在(type $$outputfile ^| find "" /v /c
(do(回波线计数为%%b>$count_file.txt))
这里$$outfile和$$count_file路径和文件名是从param文件中选取的。
有一个ABORT()
函数可以用于表达式转换
创建一个伪列,并在源限定符后面放置一个分类器、聚合器。在聚合器中,获取所有数据的计数,然后将其加入主流。在joiner之后,放入一个具有以下条件的表达式转换-
IIF( cnt_all > 1, NULL, ABORT( 'Only header exists in the input file! Session will be aborted.'))
整个映射应该是这样的——
SQ -- EXP(add dummy_col) -->SRT on dummy_col -->AGG on dummy_col, calculate Count(*)->|
|--------------------------------------------> JNR on dummy_col -->EXP (abort if count <=1) --> existing mapping logic...
编辑:在命令任务中,当您的条件满足时,您可以调用pmcmd abortworkflow
。正常语法如下-
pmcmd abortworkflow -service service -user username -password password -f folder workflow