2016-10-10 297 views
1

我创建了一个从平面文件中提取数据的映射,该文件向我显示特定SSRS报告的使用情况数据。每天使用前几天的使用数据覆盖该文件。我的问题是,有时该报告在当天没有任何用处,并且我的ETL向我发送了“失败”电子邮件,因为源中没有任何数据。如果源中没有数据或者阻止它失败,则从运行中执行作业。Informatica会话失败

--Thanks

+0

” ......有没有一种方法来保持运行作业时有源没有数据.. 。“ –

+0

嗨约翰逊,它不是会议失败,因为源中没有数据。发布您的错误信息,将有助于为您提供解决方案 –

回答

0

一个简单的方法来解决这个问题是创建一个“直通”映射只包含一个平面文件源,源预选赛和平面文件目标。

您将创建一个会话,该会话在您的工作流程开始时运行此映射并让它读取您的平面文件源。目标可以是一个虚拟的平面文件,您可以继续覆盖。然后,你就必须在链接这种情况下你的下一次会议将实际处理的文件:

$s_Passthrough.SrcSuccessRows > 0
0

是的,有几种方法,你可以做到这一点。

当没有源数据时,您可以向ETL作业提供空文件。为此,请在Informatica工作流程中使用预先会话命令,如touch <filename>。如果它不存在,这将创建一个空文件,并带有<filename>。工作流将以0行成功运行。

如果有触发的Informatica任务的脚本,然后你可以把支票那里,以及这样的:

if [ -e <filename> ] 
then 
    pmcmd ... 
fi 

这将从执行跳过工作。

+0

Hi Samik,非常好的答案。非常感谢。但事情是,他有没有数据的源文件。这应该没有问题。希望他们对电子邮件任务有条件。并且touch命令为您提供没有列名的虚拟文件,执行会话时会失败 –

+0

嗨吉姆,我认为没有源文件,这就是工作流失败的原因。你确定,如果文件中没有列名,它会失败吗?我必须检查。 – Samik

+0

是的,它肯定会失败。因为在会话执行期间,SQL重写查询将不会从源提供任何列名称。要与informatica保持联系,只需要一个路径 - https://etlinfromatica.wordpress.com/ –

0

在实际数据加载之前有另一个会话。阅读文件,使用FALSE过滤器和一些虚拟目标。链接这一个会议,你已具备,并设置以下链接条件:

$yourDummySessionName.SrcSuccessRows > 0