SPSS Modelerのスクリプト (Jythonベース) で、日付型のストリームパラメータの値を取得してスクリプト内で加工するときのTipsです。
日付型で作成したパラメータをスクリプト内でgetParameterValueで受け取ってみると、Jythonのjava.util.Date型だったため、java.util.Dateをdatetimeに変換する必要があります。軽くハマったので記録として残します。
例として、SPSS Modeler上で以下のようなDATE_Xという日付型のストリームパラメータを定義します。
スクリプト内でdatetimeのdate型に変換するコード例です。
from datetime import datetime
stream = modeler.script.stream()
# パラメータDATE_Xの値を取得
date_x = stream.getParameterValue("DATE_X")
# java.util.Date型をdatetime型に変換
date_x_trans = datetime.fromtimestamp(date_x.getTime()/1000).date()
(補足)
- modeler.sciript.stream()は、スクリプト内でSPSS Modelerストリームオブジェクトを扱うためのおまじない
- .getTime()で、java.util.Dateでのエポック時間を取得。単位はミリ秒。秒にするため
/1000
する - .date()で、datetimeをdateに変換
参考にしたStackoverflow : リンク