Java Snippetで変数・条件分岐を使用し、レコードのグループごとに番号を振る設定が実現できたので記事にする
いろいろと応用できるとおもうのでヒントになれば
使用Node:Java Snippet
WFの例と解説
▼配置例▼
【Table Creator】リストを準備
【Java Snippet】グループごとに同じ番号を振る
▼記述例▼
// Your custom variables: String previous_order; int sum = 0; //初期値は0 "--------------------------"; // Enter your code here: if(c_test.equals(previous_order)){ out_No = sum; //一つ前のレコードの値と同じ場合にはsumの値を代入 }else{ sum += 1; //一つ前のレコードの値と異なる場合には変数sumの値を1ずつ加算 out_No = sum; //加算した値をsumに代入 } previous_order = c_test; //カラム「test」の一つ前のレコードの値を参照
▼実行結果▼
▼Node設定例▼
【Java Snippet】グループごとに通し番号を振る
▼記述例▼
// Your custom variables: String previous_order; int sum = 0; //初期値は0 "--------------------------"; // Enter your code here: if(c_test.equals(previous_order)){ sum += 1; //一つ前のレコードの値と同じ場合にはsumの値を1ずつ加算 out_No = sum; //加算した値をカラム「No.」に代入★★ }else{ out_No = 1; //一つ前のレコードの値と異なる場合には1を代入 sum = 1; //変数sumの値を1にリセット } previous_order = c_test;//カラム「test」の一つ前のレコードの値を参照
▼実行結果▼
▼Node設定例▼
【0221追記】もっと簡単に前後の値を取得する方法
カレントレコードからみた前後のレコードの値の参照・利用につき
KNIME4.7(もしかすると4.6も?)であれば当記事にあるような小難しい記述をする必要はない
以下の記事を参照
▼KNIME_offsetによる前後のレコードの値の参照【Column Expressions】▼
tama-shi.hatenadiary.com