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