Informatica 循环

Informatica Looping

我正在寻找有关 Informatica 中循环的信息。具体来说,我需要检查源 table 是否已加载,如果已加载,则转到下一步,如果没有,请等待 X 分钟并再次检查状态 table。我更喜欢去一个我可以自己学习的地方,但我需要确认这是可能的,因为我在 google 搜索中没有找到任何东西。

您可以使用一个简单的 shell 脚本来执行此等待和观察功能。

#/bin/sh
# call it as script_name.sh 
# it will wait for 10 min and check again for data, in total it will wait for 2hours. change them if you want to
# Source is assumed as oracle. change it as per your  source.

interval=600
loop_count=10
counter=0
while true
do
    $counter=`expr $counter + 1 `
    db_value=`sqlplus -s user/pass@local_SID <<EOF
    set heading off
    set feedback off
    SELECT count(*) FROM my_source_table;
    exit
    EOF`;
   if [ $db_value -gt 0 ]; then
      echo "Data Found."
      exit 0
   else
      if [ $counter -eq $loop_count ]
      then 
         echo "No data found in source after 2hours"
         exit 1
      else
         sleep $interval
      fi
   fi
done

并将此 shell 脚本(在 CMD 任务中)添加到工作流程的开头。
然后使用 informatica link 条件,就好像 status= 0,继续等待时间结束的电子邮件。

您可以参考下图。如果等待时间结束并且源中仍然没有数据,这将发送一封邮件。

一般来说,Informatica PowerCenter 不支持循环。

一种方法是使用脚本,正如 Koushik 所讨论的那样。

另一种方法是使用带计时器的 Continuously Running Workflow。这可以在工作流程的“调度程序”选项卡上进行配置:

这样的配置使得工作流在成功后立即重新启动。一遍又一遍。

工作流程如下:

Start -> s_check_source -> Decision -> timer
                                   |-> s_do_other_stuff -> timer

这样它将检查来源。然后,如果尚未加载,则触发计时器。它会成功并再次被触发。 如果源结果被加载,它会触发另一个会话,完成并且可能你需要另一个计时器在这里等到第二天。或者基本上直到您希望再次触发工作流程。