Skip to main content

Filter

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

  1. Drag Filter from the Functions section of the Element Panel.
  2. Connect it to a data source or upstream node.
  3. 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:

  1. Field — the column to test (the dropdown lists the upstream fields and their types).
  2. Operator — the comparison to apply (the available operators depend on the field's type).
  3. 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

OperatorMeaningApplies to
=Equal toany type
!=Not equal toany type
> >= < <=Ordered comparisonnumbers, dates
Contains / Not ContainsSubstring present / absenttext
Starts With / Not Starts WithPrefix matchtext
Ends With / Not Ends WithSuffix matchtext
Is Null / Is Not NullHas no value / has a valueany type
In / Not InMatches any / none of a listany type

There is no "between" operator — express a range as two conditions (Amount >= 10 AND Amount <= 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 Null condition 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