SPSS Modeler で作業をしている際、入力ファイルが多数ある場合に、ひとつひとつのノードを開いて、区切り文字や改行やエンコードなどを設定するのが面倒になることがあります。
全ての入力ノードに同じ設定をするなら、一括で設定できたらいいのにと思い、Pythonスクリプトで一括変更することにしました。
手順
1.ツール > ストリームのプロパティー > 実行をクリックします。
2.スクリプトの設定画面が開きます。青い網掛け部分にPythonスクリプトを書くことができます。
3.下記のような形式で一括変更したい内容を設定します。
import modeler.api
stream = modeler.script.stream()
for node in stream.iterator():
if (node.getTypeName() == "variablefile"): # ストリーム内の全ての可変長ファイルノードが対象
node.setPropertyValue("quotes_2", u"PairAndDiscard") # 二重引用符をペアで破棄
node.setPropertyValue("quotes_1", u"PairAndDiscard") # 単一引用符をペアで破棄
node.setPropertyValue("break_case_by_newline", True) # 行区切り文字は改行文字にチェック
node.setPropertyValue("read_field_names", False) # ファイルからフィールド名を取得のチェック無
node.setPropertyValue("encoding", u"UTF-8") # エンコードをUTF-8にセット
4.左から5番目の「このスクリプトを実行」アイコンをクリックして実行します。
これでストリーム上にあるすべての可変長ファイルノードの設定が一括で変更されました。
過去にも何度か同じことを繰り返しているのですが、その都度一時的な作業なのでストリームを保存せずに捨ててしまっていたため、毎回マニュアルを参照してPythonスクリプトを用意していたため、数か月後の自分のために、今回はQiitaにメモを残すことにしました。
自分用のメモなので、比較的よく使うところだけの機能ですが、これを応用すれば、他の種類のノードも一括変更したいときに使えると思います。面倒だなと思っている他のどなたかの参考にもなれば幸いです。
試した環境
Modeler 18.2.1
Windows 10