非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

【KNIME】小ネタ:変数受け渡しに使う"赤線"の活用法

前回の記事の最後に、こんなキャプチャを載せました。

f:id:sumtat:20170812235908p:plain

 ●ー●の繋がりは、基本的には変数の受け渡しを行うためのものです。上記の例だと、Table Row to Variableで日付データを変数として、Excel Writerに渡す部分だけあれば目的は達成できるはずなんですよね。解説にもそう書きました。

 では、最初のExcel ReaderとTime Generatorを赤線で繋ぐことに、何かadvantageがあるんでしょうか?

 

…無いのにわざわざ話題にしないですよね。はい、いいことあります。

結論を言うと、

workflowの動きをコントロールできる

ということです。

 

では例を挙げて紹介します。

 問題としている●ー●を書いていない状態を想定して下さい。作業終了後は、すべて青信号になっています。

f:id:sumtat:20170813151745p:plain

 続いて、別のファイルに対して同様の処理を実施する場面を考えます。つまり、Excel readerの設定にて別のファイルを指定することになります。その結果次のようになるはずです。

f:id:sumtat:20170813152157p:plain

 Excel Readerは準備ができましたよ!ということで黄色信号になります。続くRow Splitter, Excel Writerも待ってまっせーということで黄色になります。

が、しかし!

Time Generatorからのラインは緑のままです。このままExcel Writerを実行すると、以前に取得済みの日付データを使うことになります(この場合、同じ日なら問題無いけどね)。なので、Time GeneratorをResetして黄色信号に戻す必要があります。

f:id:sumtat:20170813153201p:plain

 Resetは画面上部の【表+バツ】のアイコンか、右クリックメニューの中からResetを選択することできます(Resetすると実行前に戻る。設定は変更されません。)。Resetするとこうなります。

f:id:sumtat:20170813153523p:plain

 全部黄色になりました。こうなってればいいんですが、フローが長くなったりするとうっかり忘れちゃうかもしれません。毎回、ノードを全選択(Ctrl+A, command+A)してからResetするような対応でもいいかもしれません。でも、計算時間かかるから、全部はresetしたくないというケースもあるはずです。

 そこで威力を発揮するのが冒頭で紹介した●ー●の部分になります。

f:id:sumtat:20170813162031p:plain

 

 この状態で、Excel Readerにて指定するファイルを変更するだけで、すべて黄色信号になります。

 

KNIMEの仕様として、

▶︎、など受け取るデータは全て受け取らないと、処理が実行されない

ということになっているようです。

 

 ですので、今回の場合はExcel ReaderをresetすればTime Generatorもresetされるし、共に黄色信号の状態でTime Generatorを実行すれば、先にExcel Readerが実行されます。

 今回の場合Excel Readerは変数として何を持っているの?という疑問が湧きますよね?

f:id:sumtat:20170813155215p:plain Excel Readerのoutput table内、Flow Variablesタブを確認すると、KNIMEの作業場所?が勝手に変数として流れています。大して意味はないものですが、これを受け渡しするという特殊な状況にしてやることで、workflowの実行順などをコントロールすることができます。

 

 キャプチャだけ、単純なパターンをもう一例↓

f:id:sumtat:20170814081506p:plain

 Node4を実行すると、Node1から始まって、Node2で書き出しが完了すると、Node3が開始され、それに続いてNode4の書き出しが行われます。

 

 この小技、役に立つ場面がきっと訪れると思います。今後も機会があれば、このパターンを盛り込んだ例を紹介できればいいなと思います。