SSブログ

IBM SPSS Modeler 異なるデータソースの結合でプッシュバックが切れる?切れない? [データサイエンス、統計モデル]

データベース(Netezza)に3つのデータソース(a, b, c)があったとします。

データソースaの中に購買履歴があり、
データソースbの中に顧客表があり、
データソースcの中に閲覧履歴があったとします。
※ cは、結合と関係ないデータソース

今、購買履歴の顧客CDとの顧客表の顧客CDで表を結合することを考えます。

IBM SPSS Modeler(旧称:Clementine)でストリームを作ると、このようになります。



同じデータベースなのですが、異なるデータソースの結合になるため、プッシュバックが効かずに、購買履歴の全件データと顧客表の全件データを、ローカルマシンに持ってきて、そこで結合しようとします。

つまり、大量のデータをデータベースから取得するので、データベース側に負荷がかかりますし、ローカルPCにも負荷がかかってしまいます。

これまでは、異なるデータソースの結合はプッシュバックが切れてしまって仕方がないものだと思っていました。
実は、IBMのサポートにメールしても同じような答えが返ってきました。

が!実は、プッシュバックが切れないことが解りました。w

SQLのインプットノードでSQLクエリー(Q)を選択し、直接SQLを書きます。



SELECT * FROM a..購買履歴 x1 INNER JOIN b..顧客表 x2 ON x1.key_id = x2.key_id


ちなみに、データソースは、何も選択しないとエラーが起きるのですが、適当に何かのデータソースを選択していれば、OKです。
今回の場合、aでもbかまいません。
さらにいえば、結合と全く関係ないデータソースcを選択しても大丈夫そうです。

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