Filter

The Filter node keeps only the rows that match the conditions you define, and drops the rest. It is one of the most commonly used Function nodes.
How it works
Filter evaluates each row against your conditions:
- Matching rows pass through to the next node.
- Non-matching rows are discarded.
Columns are never added, removed, or changed — only the number of rows changes.
Adding a Filter
- Drag Filter from the Functions section of the Element Panel.
- Connect it to a data source or upstream node.
- Click the Filter node to open its condition builder.
The condition builder
You build filter logic visually — no expressions to type. Each condition is a row with three parts:
- Field — the column to test (the dropdown lists the upstream fields and their types).
- Operator — the comparison to apply (the available operators depend on the field's type).
- Value — what to compare against: a literal value, or another field.
Click Add Condition to add a row, and Add Group to nest a set of conditions under their own AND/OR logic.
Operators
| Operator | Meaning | Applies to |
|---|---|---|
= | Equal to | any type |
!= | Not equal to | any type |
> >= < <= | Ordered comparison | numbers, dates |
| Contains / Not Contains | Substring present / absent | text |
| Starts With / Not Starts With | Prefix match | text |
| Ends With / Not Ends With | Suffix match | text |
| Is Null / Is Not Null | Has no value / has a value | any type |
| In / Not In | Matches any / none of a list | any type |
There is no "between" operator — express a range as two conditions (
Amount >= 10ANDAmount <= 100). Text comparisons (=,Contains) are case-sensitive.
Combining conditions
AND — all must be true
Status = "Active"
Amount > 1000
Region = "West"
Only rows meeting all three conditions pass.
OR — any can be true
Status = "Active"
Status = "Pending"
Priority = "High"
Rows meeting any condition pass.
Mixed logic with groups
Use groups to combine AND and OR:
(Status = "Active" OR Status = "Pending")
AND
(Region = "East" OR Region = "West")
AND
Amount > 500
To build this: add the two OR conditions inside a group set to OR, add a second OR group, then keep the outer logic on AND.
Comparing one field to another
Instead of a literal value, a condition can compare two fields:
ActualAmount > BudgetAmount
ShipDate > DueDate
How nulls behave
Filtering uses the same strict-SQL semantics as the
Expression Language: a row whose tested value is
NULL does not match =, !=, >, Contains, and the like. To keep or
find empty values, use Is Null / Is Not Null explicitly:
ImportantField Is Not Null // drop rows missing the value
RequiredField Is Null // find rows that need cleanup
Strict mode
By default, if a condition errors on a particular row (for example a type mismatch), that row is dropped and the problem is recorded as an execution warning on the run's Insight — the flow still succeeds. Enable strict mode (Fail on row error) to halt the run on the first error instead, which is useful while debugging.
Examples
Recent high-value orders
OrderDate >= "2025-01-01"
OrderTotal >= 500
Status In ["Confirmed", "Processing", "Shipped"]
Exclude test data
CustomerType Not In ["Test", "Demo", "Internal"]
Low-stock alert (field-to-field)
QuantityOnHand < ReorderPoint
IsActive = true
Audit candidates (mixed logic)
(TransactionType = "Refund" AND Amount > 1000)
OR
(ApprovalStatus = "Override")
Tips
- Filter early. Placing a Filter before a Merge or Group By reduces the data those nodes have to process.
- Be explicit about nulls. Add an
Is Not Nullcondition when a field can be missing and you don't want those rows. - Preview the node to confirm the right rows pass and the count matches what you expect.
Next steps
- Expression Language — the semantics behind the operators
- Formula — add calculated columns
- Merge — combine filtered data with another source
- Building Flows — put nodes together into a Flow