ClementineはどんなSQLをデータベースに命令しているのか | SPSS備忘録

ClementineはどんなSQLをデータベースに命令しているのか

Clementineには「SQL最適化」という機能があり、Clementineでノードを並べて接続することで設定した一連の処理の内SQL に出来る部分を書き直してODBC で接続しているデータベースに命令する機能です。これによりClementineで処理をせずある程度データベースで処理したあとでClementineに取り込んで残りの処理を行うことが出来ます。OracleなどのRDBMS はレコードやフィールドに複雑なリンクをあらかじめ貼っておくなど高速処理の工夫が施されておりますので、同じマシン上でもClementine自体の処理より速いです。Clementineとは別の冷蔵庫のようなサーバーに入っているデータベースに接続できれば、なお高速化が見込めそうです。


当然データ入力ノードがデータベース入力ノードで始まっているストリームである必要があります。「SQL最適化」で処理されているものはClementineの実行時にノードが紫色になり、紫色にならないノードはClementine側で処理されております。


ログとステータス


Clementineのメニュー[ツール]→[ユーザーオプション]をクリックし、ダイアログの[最適化]タブをクリックしますとこの機能に関する設定項目があります。上半分の[設定]はすべてチェックしておいていいでしょう。ただし4月6日の記事の問題 に引っかかる場合は[データベースキャッシング]は外してください。なおoptions.cfgファイルなどの設定のほうが優先されますので、ここで設定した内容が反映されない場合もございます(options.cfgファイルについてはそのうち取り扱います)。


下半分の[ログとステータス]を設定しておくと、最終的にClementineはどんなSQLをデータベースに命令しているのかがわかりますので、最適化が具体的に何をやっているかも確認できます。チェックボックスでは「実行中」と「準備中」で確認できるようなのですが・・・


メッセージ


赤枠の[...]ボタンをクリックし[メッセージ]タブをクリックすると、Clementineが出しているSQLを実行中でも確認できます。「準備中」にチェックがあれば実行前の「プレビュー」を、「実行中」にチェックがあれば実行中のSQLを確認できますので、見たい項目をクリックして内容を確認します。10個以上のノードによる複雑な処理がここでSQL化されていると、結構壮観なSQLが表示されます。


sql


ちなみにデータベース入力ノードでモードを[SQLクエリー]としてデータソースを指定し、[メッセージ]タブで得た内容を貼り付けて、データベース入力ノードひとつで実行させるということも出来ます。