Filter node
The Filter node drops rows that don't match a rule set. It's the cheap early-exit node in a flow: place it right after Source to keep the pipeline light and downstream nodes fast.
When to use
- The Source returns more rows than the downstream steps need, and pre-filtering saves cost / time.
- You want to route only a subset of rows to a downstream branch (combine with Fork if the other subset should still flow somewhere).
- The predicate is expressible as a set of AND / OR conditions over row columns.
Ports
| Port | Direction | Kind | Notes |
|---|---|---|---|
in | in | data | Rows to evaluate. |
out | out | data | Rows that matched. |
error | out | control | Fires on expression eval errors when strict mode is on. |
notify | out | control | Notification policy port. |
Configuration
- Mode.
rules(default) — a structured predicate builder: groups of{ field, op, value }rows combined with AND / OR.expr— a raw expression (AND(GT(row.amount, 100), EQ(row.currency, "USD"))).
- Rule ops.
equals,not equals,contains,starts with,ends with,regex,greater than,less than,is null,is not null,in list. - Value. Literal or a
{{ row.column }}/{{ exec.variable }}reference.
Configure Action walkthrough
- Toggle mode: Rules (structured) or Expression (raw).
- In Rules mode: pick a field with the SchemaFieldSelect (dropdown of upstream columns), pick an op, enter a value. Add rules to build an AND group; add groups for OR.
- In Expression mode: use the
evalTransformExprfunction catalog.AND/OR/NOT/IFcompose predicates.
Runtime behaviour
- Per-row evaluation. Truthy result → row emitted on
out. Falsy → row dropped. - Expression errors on a specific row route the row to
errorwhen strict mode is on; otherwise the row is treated as non-matching.
Failure modes
- Regex misparse. The modal validates the regex at Save time.
- Type mismatch. Comparisons coerce leniently (
GT("5", 3)treats the left as a number). UseCAST-style expressions (ADD(row.x, 0)) for numeric coercion.