たま氏の覚え書き

KNIME・VBA・Java等、学習したことを覚え書き

KNIME_offsetによる前後のレコードの値の参照【Column Expressions】

カレントレコードの前後のレコードを参照したい場合の例を紹介
使用Node:Column Expressions / Table Creator

WFの例と解説

いままで何回か、ひとつ前のレコードを参照するWFを紹介してきたが
Excelを使える方ならわかるあの「offset」が、Node【Column Expressions】で超簡単に使うことができた…



【0216追記】
KNIMEのVer.4.5の【Column Expressions】の場合には当機能を利用することはできずタブ「Advanced」も存在しなかった
そのため当記事の内容はVer4.7利用下において確認できた動作についての解説ということになる

▼ひとりごと▼
ここ数か月はインフォコムさんのサイトをちょくちょく訪れてお知らせをチェックするようにしており、過去の記事も読んだつもりだったのだが
うっかり以下の文章を読み飛ばした、というかあまり見ていなかった…

■リリースノート 2022.6.17 の画面キャプチャ

https://knime-infocom.jp/blog/whats-new-in-knime-46/

今日、ほんとうにたまたま読み返し、たまたまきづいて、すぐに試したところあっけなく前後のレコードの取得がうまくいき
そのあまりの簡単さに過去の苦労(LagColumnノードを使ってわざわざ1列増やして処理、javaっぽい記述を考えて処理、等)が思い出され
あらたな発見に対する喜びがあまりなく、むしろ哀しみと切なさの中で震えながら当記事を作成するに至った

【Table Creator】表の作成

文字列のカラムと数値のカラムをそれぞれ作成した

▼設定例▼


【Column Expressions】指定したカラムの値をoffsetで取得

Nodeについて

このNodeは、最新のKNIMEでは追加しなくても標準で入っているようにおもうが、もしない場合には取得が必要
これひとつで、StringManipulation/MathFormula の機能を使えて、しかも複数の設定をひとつのNodeにまとめられる
関数の指定等の各種設定についても、StringManipulationを使ったことがあれば難しいことはない
処理結果を既存のカラムに上書きするのか、カラムを新規作成して反映するのかという設定は若干異なるがすぐにわかるとおもう

▼とてもよくわかるNodeの解説▼
KNIME - カラム操作はこれ1つで十分!? 万能Node! - Column Expressions - デジタル推進課

タブ「Expressions」でoffset指定

offsetは、Excel等の関数のそれと同じで、このNodeにおいては「column」の第2引数に取得したい位置を指定する

エディタの入力窓上にある「+function」で「column」という関数を選んで第1引数にカラム名を入力するか
「+column」でカラムを指定して第2引数を手入力するか、お好きな方法で記述
※やりたいことはoffsetの利用であるものの、エディタ内で「offset」と記述したり「offset」という関数を選ぶわけではない


▼設定例_文字列カラムのoffset▼


▼設定例_数値カラムのoffset▼


タブ「Advanced」で取得範囲を設定

当記事の例のように、ひとつ前またはひとつ後、という範囲を取得するのであれば、「window size」に「1」を設定
また、結果を反映するカラムの最初と最後のレコードをどうしたいのかについてもその下で選ぶ(たま氏はnullにした)

▼設定例▼


▼処理結果▼


▼KNIME Hub▼
hub.knime.com

たま氏の例が単純で簡単すぎるという人に向けて
KNIME公式の利用例のリンクも置いておく(このNodeでif文使ったことなかった…書き方、勉強勉強…)

▼KNIME Hub_公式▼
hub.knime.com

あーあ、もっと早く知りたかったよ…(しつこい?)
過去のあがきを記念に披露しておく、、、いままで費やしてきた時間、無駄じゃなかったとおもいたい…

▼たま氏がひとつ前のレコードを取得しようとあがいた結果生まれた記事たち▼
KNIME_ひとつ上のレコードの値をカレントレコードに引用その1【Java Snippet】 - たま氏の覚え書き
KNIME_ひとつ上のレコードの値をカレントレコードに引用その2【Java Snippet】 - たま氏の覚え書き
KNIME_グループごとに番号を振る【Java Snippet】同じ番号・通し番号 - たま氏の覚え書き