LoginSignup
1
0

SPSS CADSのジョブでデータがない場合のグラフ出力を失敗にしない

Posted at

CADSのジョブでデータがない場合のグラフ出力は失敗になる。

SPSS Modelerではデータがない場合にグラフを作成するとエラーになります。

例えば以下のような「1=0」のような条件抽出はレコード件数が0になるため、
image.png

次のようなエラーになります。
image.png

これをCADSのジョブとして実行してもやはり「失敗」となります。

image.png

しかし、CADSジョブが失敗すると通知しているような場合、レコードがないだけなら失敗とはみなしたくない場合も通知が届いてしまいます。

データがない場合もグラフ出力を失敗にしない

このような場合、modelerスクリプトでグラフを実行してTry CatchをすることでModelerのエラーを無効にしてしまうことができます。「このスクリプトを実行」にチェックを付けておきます。

image.png

「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をキャッチできています。
image.png

これをCADSのジョブとして実行すると「受け取ったレコードはありません。」はジョブステップのログに記録されますが、ステータスは「成功」になります。

image.png

サンプル

ストリーム

  • テスト環境
    • SPSS Modeler 18.4
    • SPSS CADS 8.4
    • Windows Server 2019

参考

エラーの処理 - IBM Documentation

Pythonの例外処理(try, except, else, finally) | note.nkmk.me

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0