はじめに
こんにちは、自動化大好きまっきーです。今回は、条件付き繰り返し文をKNIMEでどうするかについて解説したいと思います。
このNode、使い方次第ではかなり幅が広がるのでぜひ覚えてみてください。
今回のテーマ ~Variable Condition Loop End~
覚えてほしいこと
条件によってLoopを終了させたい時はVariable Condition Loop End
やりたいこと
「4回目の繰り返しで繰り返しを終了させる」
今回は、Nodeの使い方を簡単に説明するために単純な例として、
元々7回繰り返しが予定されていたLoopに対して、4回目の繰り返しで終了させたいと思います。
条件付きループとは?
そもそも、条件付きループについて解説します。
読んで字のごとくかもしれません。「この条件が満たされるまでループを繰り返す」ということです。
例えば、買うという変数に1ずつ足していって、合計10になるまで繰り返す
ExcelのVBAやPythonなどの言語、様々なプログラミング言語にこの概念はあると思います。
このNodeは変数を使用します。知らないよって方は事前にこちらを参照ください。
また、説明のためにCouting Loop Startを使用しています。
Variable Condition Loop Endの使い方
変数の値と条件を元に、条件にMatchした場合に終了させるNodeです。
Workflow
今回は説明のためかなり単純にしています。Counting Loop Startで、7回繰り返しを指定しますが、
Workflowは下記からダウンロードできます。
条件まで繰り返す - Variable Condition Loop End – KNIME Hub
Confirm - Before After
Counting Loop Startで7回と設定しているにもかかわらず、Outputは4回の繰り返しで終了していますね。
Configure - Default Settings
Configureは非常に簡単です。1つ1つ項目説明していこうと思います。
Step1 - 条件の設定
まずは繰り返しを終わらせる条件を指定します。
1)変数を指定して
2)条件を指定
という流れです。
1) はAvailable flow variablesのOptionからプルダウンで変数を指定できます。
2)は、Finish loop if selected variable is のOptionから、条件を指定します。
この条件の符号は変数のデータ型によって変化します。変数が数字型だと、選択肢が多いですね。理系の方々はよく分かっていると思いますが、一応それぞれの符号の意味も付け加えておきますね。
- = :: 等しい
- != :: 等しくない
- <= :: 以下
- < :: より小さい
- >= :: 以上
- > :: より大きい
Step2 - 出力オプション
次にいくつか出力オプションがあるのでみていきましょう。それぞれのオプションの意味は下記の通りです。
- Collect rows from last iteration:: 通常のLoop Endと同じく、全ての繰り返し結果をConcatenateして出力するOptionです。
- Collect rows from last iteration only:: 最後の繰り返しの場合しか出力しないOptionです。Row Filterがセットになったイメージでしょうか。終了時のテーブルだけが欲しい!という場合に便利ですね。
- Add iteration column:: 繰り返し回数が記載されたコラムを追加するオプションです。
意味からも分かる通り、 Collect rows from last iterationとCollect rows from last iteration onlyのオプションはどちらか一つしか選択できません。
ちょっと一言
Rule Engineと組み合わせれば最強!?
このNode、Rule Engineと組み合わせればかなり多彩に活躍できると思うんです。
例えばChunk Loop StartとRule Engine を組み合わせたらどうでしょうか?
Chunk Loop Startで1行ずつ読み込んで、Rule Engineで複雑なルール判定、終了したいルールの時に変数の値を変更してあげれば、Loopが止められますよね。
これを使った実践的な内容をいずれ投稿しようと思います。
おわりに
お疲れ様でした。Nodeを知れば知るほどできることが増えていっていいですよね。基本やりたいことが達成できればどんなFlowでもいいとは思いますが、色んなNodeを知っていってより単純明快なFlowを作っていただければと思います。
ではまた!
一日1回押していただけると大変応援になります↓
余談
2月になり、Rakutenモバイルの通信制限が解除されました!
かといって、通信制限時も100MBの速度が出ているので、正直使い勝手変わらなかったんですけどね、、、なので、楽天モバイルのエリアに入っている・入っていないはあまり関係ないかなと思っています。もちろん、楽天エリアの方がいいんですけどね!
Rakutenモバイルのアプリ作りたいのですが、まだまだ技術が足りず、、いつになったら完成できますかね。気長にやりたいと思います。
参考リンク
- KNIME公式Node Pit(英語):
Variable Condition Loop End — NodePit
- KNIME Example Workflow(英語):
Variable Condition Loop End – KNIME Hub