SPSS ModelerでSORT+LIMITをSQLプッシュバックさせる
SPSS Modelerでソートノードの後にサンプリングノードで初めのn件のサンプリングをするとサンプリングノードがデフォルトではプッシュバックできません。これはデータ量が多い場合には大量データを取得することになりとても効率が悪いことがあります。
これを可能にする設定を紹介します。
■テスト環境
- Modeler 18.2.2
- Db2 Warehouse on Cloud
サンプルストリームと設定ファイルは以下です。
以下のように「ソート」をした後に、「初めのn件のサンプリング」を行うと、後半のサンプリングがSQLプッシュバックしません。
プッシュバックされた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ごとに決まっています。以下のマニュアルから探してください。
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を再起動してください。
[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
Author And Source
この問題について(SPSS ModelerでSORT+LIMITをSQLプッシュバックさせる), 我々は、より多くの情報をここで見つけました https://qiita.com/kawada2017/items/58b9c071f99818fcbfb1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .