4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SPSS ModelerでSORT+LIMITをSQLプッシュバックさせる

Last updated at Posted at 2021-04-19

SPSS Modelerでソートノードの後にサンプリングノードで初めのn件のサンプリングをするとサンプリングノードがデフォルトではプッシュバックできません。これはデータ量が多い場合には大量データを取得することになりとても効率が悪いことがあります。
これを可能にする設定を紹介します。

■テスト環境

  • Modeler 18.2.2
  • Db2 Warehouse on Cloud

サンプルストリームと設定ファイルは以下です。

以下のように「ソート」をした後に、「初めのn件のサンプリング」を行うと、後半のサンプリングがSQLプッシュバックしません。

image.png

プッシュバックされたSQL文は以下で、SORTは行われていますが、LIMIT(やFETCH FIRST N ROWS ONLY)は行われていません。

[2021-04-19 15:32:59] SQL をプレビュー中: 
SELECT T0."M_CD" AS C0,T0."UP_TIME" AS C1,T0.POWER AS C2,T0.TEMP AS C3,T0."ERR_CD" AS C4 
FROM "COND4N_E" T0 
ORDER BY 1 ASC,2 ASC

これはデフォルトではSORTをネストしたSQL文を有効にする設定を行います。

odbc-<RDB名>-custom-properties.cfgというファイルをつくり、sqlmx_sort_by, Yを書きます。

<RDB名>はdb2やbigquery、oracleなどRDBごとに決まっています。以下のマニュアルから探してください。

odbc-db2-custom-properties.cfg
sqlmx_sort_by, Y

ModelerクライアントとModeler Serverの導入ディレクトリのconfigフォルダーに置きます(例:C:\Program Files\IBM\SPSS\Modeler\18.2.2\config\odbc-db2-custom-properties.cfg)。
配置には管理者権限が必要です。置き換えたらModelerクライアントやModeler Serverを再起動してください。

再度実行するとSQLプッシュバックされるようになりました。
image.png

SORT+LIMIT
[2021-04-19 15:48:14] SQL をプレビュー中: 
SELECT T0.C0 AS C0,T0.C1 AS C1,T0.C2 AS C2,T0.C3 AS C3,T0.C4 AS C4 
FROM (SELECT T0."M_CD" AS C0,T0."UP_TIME" AS C1,T0.POWER AS C2,T0.TEMP AS C3,T0."ERR_CD" AS C4 
FROM "COND4N_E" T0 
ORDER BY 1 ASC,2 ASC 
FETCH FIRST 10 ROWS ONLY) T0
4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?