【KNIME】小ネタ:変数受け渡しに使う"赤線"の活用法
前回の記事の最後に、こんなキャプチャを載せました。
●ー●の繋がりは、基本的には変数の受け渡しを行うためのものです。上記の例だと、Table Row to Variableで日付データを変数として、Excel Writerに渡す部分だけあれば目的は達成できるはずなんですよね。解説にもそう書きました。
では、最初のExcel ReaderとTime Generatorを赤線で繋ぐことに、何かadvantageがあるんでしょうか?
…無いのにわざわざ話題にしないですよね。はい、いいことあります。
結論を言うと、
workflowの動きをコントロールできる
ということです。
では例を挙げて紹介します。
問題としている●ー●を書いていない状態を想定して下さい。作業終了後は、すべて青信号になっています。
続いて、別のファイルに対して同様の処理を実施する場面を考えます。つまり、Excel readerの設定にて別のファイルを指定することになります。その結果次のようになるはずです。
Excel Readerは準備ができましたよ!ということで黄色信号になります。続くRow Splitter, Excel Writerも待ってまっせーということで黄色になります。
が、しかし!
Time Generatorからのラインは緑のままです。このままExcel Writerを実行すると、以前に取得済みの日付データを使うことになります(この場合、同じ日なら問題無いけどね)。なので、Time GeneratorをResetして黄色信号に戻す必要があります。
Resetは画面上部の【表+バツ】のアイコンか、右クリックメニューの中からResetを選択することできます(Resetすると実行前に戻る。設定は変更されません。)。Resetするとこうなります。
全部黄色になりました。こうなってればいいんですが、フローが長くなったりするとうっかり忘れちゃうかもしれません。毎回、ノードを全選択(Ctrl+A, command+A)してからResetするような対応でもいいかもしれません。でも、計算時間かかるから、全部はresetしたくないというケースもあるはずです。
そこで威力を発揮するのが冒頭で紹介した●ー●の部分になります。
この状態で、Excel Readerにて指定するファイルを変更するだけで、すべて黄色信号になります。
KNIMEの仕様として、
▶︎、●など受け取るデータは全て受け取らないと、処理が実行されない
ということになっているようです。
ですので、今回の場合はExcel ReaderをresetすればTime Generatorもresetされるし、共に黄色信号の状態でTime Generatorを実行すれば、先にExcel Readerが実行されます。
今回の場合Excel Readerは変数として何を持っているの?という疑問が湧きますよね?
Excel Readerのoutput table内、Flow Variablesタブを確認すると、KNIMEの作業場所?が勝手に変数として流れています。大して意味はないものですが、これを受け渡しするという特殊な状況にしてやることで、workflowの実行順などをコントロールすることができます。
キャプチャだけ、単純なパターンをもう一例↓
Node4を実行すると、Node1から始まって、Node2で書き出しが完了すると、Node3が開始され、それに続いてNode4の書き出しが行われます。
この小技、役に立つ場面がきっと訪れると思います。今後も機会があれば、このパターンを盛り込んだ例を紹介できればいいなと思います。