SSブログ

SPSS Modeler、NetezzaとOracle Exadataの微妙な違い その3 [データサイエンス、統計モデル]

どうも日付の計算でNetezzaとOracle Exadataで仕様がことなっており、
それが原因のエラーが発生しやすいです。

困るのが、一見、プッシュバックが効いていて上手く動いているように見えても、
データベースの内部で大量にメモリを確保してしまいエラーが起きたり、
出力される結果が想定外のものだったりします。

ユーザ側はちゃんと動いている認識なので、エラーが起こっていることが発見しにくいのが厄介ですね。

Netezzaは、同じIBMの製品なので、細かいバグのチェックなどはやっているのでしょうが、
Oracle Exadataに対しても、丁寧なバグチェックはして欲しいものです。

今回のバグですが、SPSSのストリーム内で条件抽出をしたところ、
そのレコードの抽出が微妙で、処理がすごく遅くなってしまいます。
データベース内のメモリもたくさん使ってしまいます。

そこで、SQLを書く一番最初の入力ノードに条件抽出を書いてしまうのが良いかと思われます。
速度は劇的に速くなりました。

今日から日付差が、7日以内のレコードを抽出したい場合は、このように書きます。

WHERE (TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD'), 'YYYY-MM-DD') - TRUNC("フィールド1",'DD')) <= 7
今日の日付を SYSDATE 持ってきて、"フィールド1" との日付差が7日以内という処理になります。 ~その他のTipsはこちら~ SPSS Modeler、NetezzaとOracle Exadataの微妙な違い その1 http://skellington.blog.so-net.ne.jp/2017-11-27 SPSS Modeler、NetezzaとOracle Exadataの微妙な違い その2 http://skellington.blog.so-net.ne.jp/2017-11-28

nice!(2)  コメント(0) 
共通テーマ:日記・雑感

nice! 2

コメント 0