CADSのジョブでデータがない場合のグラフ出力は失敗になる。
SPSS Modelerではデータがない場合にグラフを作成するとエラーになります。
例えば以下のような「1=0」のような条件抽出はレコード件数が0になるため、
これをCADSのジョブとして実行してもやはり「失敗」となります。
しかし、CADSジョブが失敗すると通知しているような場合、レコードがないだけなら失敗とはみなしたくない場合も通知が届いてしまいます。
データがない場合もグラフ出力を失敗にしない
このような場合、modelerスクリプトでグラフを実行してTry CatchをすることでModelerのエラーを無効にしてしまうことができます。「このスクリプトを実行」にチェックを付けておきます。
「Try」ブロックで「run」を実行して、「except modeler.api.ModelerException」でキャッチする。
メッセージが「受け取ったレコードはありません。」であれば、エラーを無視する。
import modeler.api
try:
#print 1/0
diagram = modeler.script.diagram()
diagram.findByID("id66TXP66R24G").run(None) # "X v. Y":plot
except modeler.api.ModelerException, e:
print "An error occurred:", e.getMessage()
if e.getMessage()==u'受け取ったレコードはありません。':
print u"エラーを無視"
else:
print u"無視できないエラー"
raise(e)
実行するとグラフ出力のアイコンは赤くなりますが、「デバッグ」をみると、意図通りExceptionをキャッチできています。
これをCADSのジョブとして実行すると「受け取ったレコードはありません。」はジョブステップのログに記録されますが、ステータスは「成功」になります。
サンプル
ストリーム
- テスト環境
- SPSS Modeler 18.4
- SPSS CADS 8.4
- Windows Server 2019
参考
エラーの処理 - IBM Documentation
Pythonの例外処理(try, except, else, finally) | note.nkmk.me