SSブログ

IBM SPSS Modeler(旧称Clementine)でオフセット関数のプッシュバック [データサイエンス、統計モデル]

ずっと、オフセット関数を使う場合、SQLプッシュバックってできないものと思っていました。
が、ウィンドウ(window)関数を使うことで同様の処理が出来ることがわかりました。

LAG( 項目 ,[ 行数 ,デフォルト ] )

OVER( [ PRTITION BY 項目1,
             [項目2,・・] ]
     ORDER BY 項目1,
             [項目2,・・] )


という書き方です。

IBM SPSS Modelerだと、オフセット関数を使う場合、何かの変数でソートをします。
その後で
@OFFSET(FIELD, EXPR)
という書き方をします。

たとえば、IDでソートをして変数 hoge の1つ前を持ってくる場合、
@OFFSET(hoge, 1)
と書きます。

これをウィンドウ(window)関数で書いた場合、

select
  ID,
  hoge,
  lag( hoge, 2 )
  over( order by ID ) as pre
from テーブル名;

と書けば、データベース(Netezza)側で処理させるので、ずっと高速に処理をすることができます。

nice!(35)  コメント(0)  トラックバック(0) 
共通テーマ:学問

nice! 35

コメント 0

トラックバック 0