【问题标题】:Informatica Session FailingInformatica 会话失败
【发布时间】:2016-10-10 16:19:42
【问题描述】:

我创建了一个映射,该映射从一个平面文件中提取数据,该文件向我显示特定 SSRS 报告的使用数据。该文件每天都会被前几天的使用数据覆盖。我的问题是,有时报告当天没有任何用途,我的 ETL 向我发送了一封“失败”的电子邮件,因为源中没有任何数据。如果源中没有数据,则作业停止运行或防止其失败。

--谢谢

【问题讨论】:

  • "...有没有办法在源中没有数据时阻止作业运行..."
  • 嗨约翰逊,不是会话失败,因为源中没有数据。发布您的错误消息,将有助于为您提供解决方案

标签: ssrs-2008 etl informatica informatica-powercenter


【解决方案1】:

解决此问题的一种简单方法是创建仅包含平面文件源、源限定符和平面文件目标的“直通”映射。

您将创建一个在工作流开始时运行此映射的会话,并让它读取您的平面文件源。目标可以只是一个您不断覆盖的虚拟平面文件。然后,您将在指向实际处理文件的下一个会话的链接中具有此条件:

$s_Passthrough.SrcSuccessRows > 0

【讨论】:

    【解决方案2】:

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

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

    如果您有一个触发 Informatica 作业的脚本,那么您也可以在此处进行检查,如下所示:

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

    这将跳过作业的执行。

    【讨论】:

    • 嗨 Samik,非常好的答案。非常感谢。但问题是,他有没有数据的源文件。这应该没有问题。希望他们对电子邮件任务有条件。并且 touch 命令还为您提供了没有列名的虚拟文件,在执行会话时会失败
    • 嗨 Jim,我以为没有源文件,这就是工作流失败的原因。你确定,如果文件中没有列名,它会失败吗?我必须检查一下。
    • 是的,它肯定会失败。因为在会话执行期间,SQL 覆盖查询不会从源中提供任何列名。要与 informatica 保持联系,只需指定路径 - etlinfromatica.wordpress.com
    • 您不能将 SQL 覆盖存档!
    • 我没有提到文件。覆盖查询将在执行会话时自动生成列名,如果没有提供列 - 会话将失败
    【解决方案3】:

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

    $yourDummySessionName.SrcSuccessRows > 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2022-11-13
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多