たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

KNIME_グループごとに番号を振る【Java Snippet】同じ番号・通し番号

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