I am new to KNIME and I was wondering if you can help with me writing a few rule engines.
Please see factor below:
If Column Text has “PAM_” at the beginning of the text then put “Auto” in the ‘Auto/Manual’ column (which is currently blank)
Else put “Manual” in the ‘Auto Manual’ column
But I also wanted to be able to refresh the the output file. Therefore, if I put the output file back in by joining it with the source data. If there is a value in the ‘Auto/Manual’ column already I want to leave it before adding the above rule engines. Not sure if I would use a missing node for this or not?
Please let me know the best way to write these if/then rules and missing rules.
You can use logic on multiple columns using Column Expression node. See example below.
1 Like
If I understand correctly, then there are 3 slightly different ways you could do this…
-
Rule Engine on it’s own, with a rule as follows, to replae the ‘Auto/Manual’ column directly:
NOT MISSING $Category$ => $Category$
//Generate new 'Auto' categories
$Text$ MATCHES "PAM_.*" => "Auto"
//Otherwise 'Manual' category
TRUE => "Manual"```
-
You could generate a new category column with a simpler rule like this, and follow it with a Column Merger
node, with the primary column as your existing auto/manual column, secondary column as the new auto/manual column, and the ‘replace both columns’ option selected:
$Test Column$ MATCHES "PAM_.*" => "Auto"
TRUE => "Manual"```
-
Use a Row Splitter
node to separate those rows with an existing auto/manual from those without, and use the same rule as above to replace the auto/manual column for those rows missing the categorisation, and then use a Concatenate
to put it all back together.
The attached simple workflow shows the 3 methods (with a Foo/NOT categorisation!)
categorisation.knwf (13.7 KB)
Steve
2 Likes