デジタル推進課

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

KNIME - カラム操作はこれ1つで十分!? 万能Node! - Column Expressions

f:id:makkynm:20210710094658p:plain

 

はじめに

こんにちは、自動化大好きまっきーです。 

今回は便利なNode、Column Expressionsについて解説します。

 

実はこのNode、意図的に解説していませんでした。理由は、下記の通りです。

  1. 自由度が高い:このNodeは自由度が高く、これを多用してしまうとKNIMEの利点であるWorkflowのビジュアルからLogicが分かる点が薄れてしまう
  2. 追加インストールが必要:拡張機能から追加Installしないと使えないNodeです。(たしか、うろ覚えですが、、間違っていたら教えてください。。)

 ただ、とても便利なNodeで、KNIMEのTrainingにも出てくるようなNodeですし、紹介してほしいというリクエストがあったので掲載しようと思います。慣れてきたら使ってもいいと思います。他人に共有するワークフローの場合、多用するのはあまりオススメしてないです。

 

 

 今回のテーマ ~Column Expresions~

 

 

覚えてほしいこと

共有する場合、多用は避けるかコメントをできる限り残しておく

 

やりたいこと

String Manipulation、Math Formula、Rule Engineで達成できる下記の3つのやりたいことをColumn Expressions1つで達成する

f:id:makkynm:20210708075004p:plain

やりたいこと - Column Expressions

 

f:id:makkynm:20210708075334p:plain

今回は使わない

 

これらはMath Forumla, String Manipulation, Rule Engineを使用すれば達成できます。

 

やりたいこと1 - Math Formula

残業代を2000円/hとして計算する

f:id:makkynm:20210708075259p:plain

やりたいこと1 - Math Formula

degitalization.hatenablog.jp

 

やりたいこと2 - String Manipulation

文字結合を行い、文章を作成する

f:id:makkynm:20210708075414p:plain

やりたいこと2 - String Manipulation

degitalization.hatenablog.jp

 

やりたいこと3 - Rule Engine

ものすごく意図的ですが、、

残業時間の合計が、8時間以下ならOK、15時間以下ならRisk、15時間より大きい場合は、NGというラベルをつけます。欠損値がある場合に備えてデフォルト値は、Missingとします。

f:id:makkynm:20210708075442p:plain

やりたいこと3 - Rule Engine

degitalization.hatenablog.jp

 

Column Expressionsの使い方

String Manipulation、Math Formula、Rule Engineの機能が一つにまとまったようなNodeです。複数カラムを一括で処理できるのがメリットです。コーディングのような自由度があるため、多用するのはオススメしていません。

 

Workflow - Column Expressions

f:id:makkynm:20210708075604p:plain

Workflow - Column Expressions

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

Column Expressions - 一括カラム操作 – KNIME Hub

 

Confirm - Column Expressions

String Manipulation、Math Formula、Rule Engineの3Nodeを使った時と全く同じOutputになっていると思います。このように複数カラムが1Nodeで完結できるので、Nodeを組みあげる作業が減ります。

f:id:makkynm:20210708075004p:plain

Confirm - Column Expressions

Configure - Column Expressions

自由度が高いですが、Configureはシンプルな画面です。

f:id:makkynm:20210708080119p:plain

Configure - Column Expressions

Step1 - Columnの指定

ExpressionはStep2で解説するので、ここではその他の項目について解説します。

上のプラスボタンf:id:makkynm:20210710090611p:plainから新しいExpressionを追加することができ、マイナスボタンからカラムを削除できます。f:id:makkynm:20210710090701p:plain

イメージとしては、このボタンでString Manipulation・Math Formula・Rule EngineにあたるNode1つを追加したり削除したりするものです。

  • Expression:使用する関数・ロジックを示したもの。Step2で編集する。
  • Type:データ型を指定する
  • Collection:リスト型としてカラム作成
  • Replace Column:Output Columnで指定した既存カラムを上書きする
  • Output Column:出力時のカラム名

 

また、矢印のボタンf:id:makkynm:20210710091246p:plainで出力順番を変更できます。

 

Step2 - 関数の挿入 - Expression Editor

 やりたいことごとにExpressionをお見せします。String Manipulation/Math Formula/Rule EngineとExpressionの表現が違うのでその違いも注意しましょう。

すでに表現を覚えている方は、直接入力していただいて問題ないのですが、分からない人のためにf:id:makkynm:20210710091853p:plainのボタンから補助してもらえます。クリックすると、使用できるカラムのリストや、変数のリスト、関数のリストが選択できます。

 

やりたいこと1 - Math Formula

残業代を2000円/hとして計算することでしたね。下図がExpressionになります。違いは、カラムの表現が「column("")」なのか、「$$」なのかです。

f:id:makkynm:20210710091543p:plain

Configure - Column Expressions - やりたいこと1 Math Formula

f:id:makkynm:20210710091623p:plain

Configure - Math Formula

 

やりたいこと2 - String Manipulation

文字結合を行い、文章を作成することを行います。これらも、違いは、カラムの表現が「column("")」なのか、「$$」なのかです。

f:id:makkynm:20210710092016p:plain

Configure - Column Expressions - やりたいこと2 String Manipulation

f:id:makkynm:20210710092041p:plain

Configure - String Manipulation

 

やりたいこと3 - Rule Engine

一番自由度を高くしているのがRule Engineの部分です。

残業時間の合計が、8時間以下ならOK、15時間以下ならRisk、15時間より大きい場合は、NGというラベルをつけます。欠損値がある場合に備えてデフォルト値は、Missingとします。

まさかのColumn Expressionの方が長い(Rule Engine 4行 vs Column Expression 11行)という結果。。

ただ、プログラミングをご存知の方はColumn Expressionの方が親しみが湧くのではないでしょうか。これのいい点は、プログラミング言語のように、Expression内で変数が定義できる点です。if文もプログラミング言語の表現そのままって感じですよね。

個人的には、どうやってoutputの変数を結びつけてるんだ!?という違和感が残りますが、outputの変数っぽいのを勝手に判断してくれるようです。今回はoutという変数を作っています。

f:id:makkynm:20210710093558p:plain

Configure - Column Expressions - やりたいこと3 Rule Engine

f:id:makkynm:20210710092308p:plain

Configure - Rule Engine

 

Step3 - 関数の表現確認 - Evaluate

特にRule Engineに近しいExpressionだと、本当に正しく動いているのか。。。?と気になりますよね。そこで登場するのがこのEvaluate機能です。

Evaluateというボタンを押せば、現在のExpressionで最初の行を判断した時の値を出力してくれます。

f:id:makkynm:20210710093907p:plain

Step3 - 関数の表現確認 - Evaluate

f:id:makkynm:20210710093942p:plain

Step3 - 関数の表現確認 - Evaluate

 

 

おわりに

お疲れ様でした!やっぱ便利ですよね。特に複数カラム同じような処理を行わないといけない場合、とても便利だと思います。使いすぎ注意ですが、ぜひ使ってみてください。

もし何かリクエスト等ありましたらお気軽にDM等でお問い合わせください〜、ではまた!

 

 

 

KNIME Hubワークスペース

makkynm/Public – KNIME Hub

Twitter アカウント

まっきー | デジタル推進課 (@makkynm) | Twitter

 

 

KNIMEに関する本

KNIMEに関する日本語の本って今これくらいしかないと思うんですよね、、

本がいいなーと言う人はぜひ試してみてください。

 

参考リンク