デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - 条件付きDo While Loop を実現させるには? ~ Variable Condition Loop End ~

f:id:makkynm:20210202090804p:plain

 

はじめに

こんにちは、自動化大好きまっきーです。今回は、条件付き繰り返し文をKNIMEでどうするかについて解説したいと思います。

このNode、使い方次第ではかなり幅が広がるのでぜひ覚えてみてください。

 

 

 今回のテーマ ~Variable Condition Loop End~

f:id:makkynm:20210203201343p:plain

 今回のテーマ ~Variable Condition Loop End~

 

覚えてほしいこと

条件によってLoopを終了させたい時はVariable Condition Loop End

 

やりたいこと

「4回目の繰り返しで繰り返しを終了させる」

 今回は、Nodeの使い方を簡単に説明するために単純な例として、

元々7回繰り返しが予定されていたLoopに対して、4回目の繰り返しで終了させたいと思います。

 

条件付きループとは?

そもそも、条件付きループについて解説します。

読んで字のごとくかもしれません。「この条件が満たされるまでループを繰り返す」ということです。

例えば、買うという変数に1ずつ足していって、合計10になるまで繰り返す

 ExcelVBAPythonなどの言語、様々なプログラミング言語にこの概念はあると思います。

  

このNodeは変数を使用します。知らないよって方は事前にこちらを参照ください。

degitalization.hatenablog.jp

 

また、説明のためにCouting Loop Startを使用しています。

degitalization.hatenablog.jp

 

Variable Condition Loop Endの使い方

変数の値と条件を元に、条件にMatchした場合に終了させるNodeです。

Workflow

今回は説明のためかなり単純にしています。Counting Loop Startで、7回繰り返しを指定しますが、

f:id:makkynm:20210203201343p:plain

Workflow - variable condition loop end

Workflowは下記からダウンロードできます。

条件まで繰り返す - Variable Condition Loop End – KNIME Hub

 

Confirm - Before After

Counting Loop Startで7回と設定しているにもかかわらず、Outputは4回の繰り返しで終了していますね。

f:id:makkynm:20210203202332p:plain

Configure - Counting Loop Start

f:id:makkynm:20210203202350p:plain

Confirm - Variable condition loop end

 

Configure - Default Settings

Configureは非常に簡単です。1つ1つ項目説明していこうと思います。

f:id:makkynm:20210203202512p:plain

Configure - Variable Condition Loop End
Step1 - 条件の設定

まずは繰り返しを終わらせる条件を指定します。

1)変数を指定して

2)条件を指定

という流れです。

1) はAvailable flow variablesのOptionからプルダウンで変数を指定できます。

2)は、Finish loop if selected variable is のOptionから、条件を指定します。

この条件の符号は変数のデータ型によって変化します。変数が数字型だと、選択肢が多いですね。理系の方々はよく分かっていると思いますが、一応それぞれの符号の意味も付け加えておきますね。

f:id:makkynm:20210203202843p:plainf:id:makkynm:20210203202852p:plain

  • =  :: 等しい
  • != :: 等しくない
  • <=  :: 以下
  • <  :: より小さい
  • >=  :: 以上
  • >  :: より大きい

 

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が止められますよね。

これを使った実践的な内容をいずれ投稿しようと思います。

degitalization.hatenablog.jp 

degitalization.hatenablog.jp

 

おわりに

お疲れ様でした。Nodeを知れば知るほどできることが増えていっていいですよね。基本やりたいことが達成できればどんなFlowでもいいとは思いますが、色んなNodeを知っていってより単純明快なFlowを作っていただければと思います。

 ではまた!

 

一日1回押していただけると大変応援になります↓ 

にほんブログ村 IT技術ブログへ

 

 

 

余談 

 2月になり、Rakutenモバイルの通信制限が解除されました!

かといって、通信制限時も100MBの速度が出ているので、正直使い勝手変わらなかったんですけどね、、、なので、楽天モバイルのエリアに入っている・入っていないはあまり関係ないかなと思っています。もちろん、楽天エリアの方がいいんですけどね!

Rakutenモバイルのアプリ作りたいのですが、まだまだ技術が足りず、、いつになったら完成できますかね。気長にやりたいと思います。

  

 

参考リンク