Filter Rows
Remove rows that don’t match your conditions. Define one or more condition groups — rows pass if they match ALL conditions in ANY group (AND within groups, OR across groups). Use it to clean data, extract subsets, or focus on specific segments before further processing.
How it works
Section titled “How it works”Filter Rows evaluates each row against your conditions and keeps only the rows that pass. It processes data one row at a time (streaming), so it works efficiently even on large files.
Conditions are organized into groups. Within a group, all conditions must be true (AND logic). Across groups, any group passing is enough (OR logic). This lets you express rules like “keep rows where status is ‘active’ AND region is ‘US’” or more complex filters like “(status is ‘active’ AND region is ‘US’) OR (status is ‘pending’ AND amount > 1000)”.
If no conditions are defined, all rows pass through unchanged.
Input: One tabular data connection. Output: The same columns, with non-matching rows removed.
Options
Section titled “Options”Condition Groups
Section titled “Condition Groups”Each group contains one or more conditions. Add multiple groups to create OR logic.
Conditions
Section titled “Conditions”Each condition specifies a column, an operator, and (for most operators) a comparison value.
| Operator | Description | Requires Value |
|---|---|---|
| equals | Exact string match | Yes |
| not equals | Passes when the cell does not match the value | Yes |
| contains | Substring match (case-sensitive) | Yes |
| not contains | Passes when the cell does not contain the value | Yes |
| greater than | Numeric comparison: cell > value | Yes |
| less than | Numeric comparison: cell < value | Yes |
| greater than or equals | Numeric comparison: cell ≥ value | Yes |
| less than or equals | Numeric comparison: cell ≤ value | Yes |
| is empty | Passes when the cell is empty, null, or undefined | No |
| is not empty | Passes when the cell has any value | No |
Examples
Section titled “Examples”Keep only active users
Section titled “Keep only active users”You have a user list and want to extract rows where the status column is “active”.
Before:
| name | status | |
|---|---|---|
| Alice | [email protected] | active |
| Bob | [email protected] | inactive |
| Carol | [email protected] | active |
| Dave | [email protected] | pending |
Configuration: One group with one condition — column: status, operator: equals, value: active.
After:
| name | status | |
|---|---|---|
| Alice | [email protected] | active |
| Carol | [email protected] | active |
Remove rows with missing data
Section titled “Remove rows with missing data”You want to exclude rows where the email column is empty.
Before:
| name | role | |
|---|---|---|
| Alice | [email protected] | admin |
| Bob | user | |
| Carol | [email protected] | user |
Configuration: One group with one condition — column: email, operator: is not empty.
After:
| name | role | |
|---|---|---|
| Alice | [email protected] | admin |
| Carol | [email protected] | user |
OR logic: keep high-value or VIP rows
Section titled “OR logic: keep high-value or VIP rows”You want to keep orders above $500 OR orders from VIP customers, regardless of amount.
Before:
| customer | amount | tier |
|---|---|---|
| Acme Corp | 250 | standard |
| Beta Inc | 750 | standard |
| Gamma LLC | 100 | vip |
| Delta Co | 50 | standard |
Configuration: Two groups:
- Group 1: column
amount, operatorgreater than, value500 - Group 2: column
tier, operatorequals, valuevip
After:
| customer | amount | tier |
|---|---|---|
| Beta Inc | 750 | standard |
| Gamma LLC | 100 | vip |
Tips and Edge Cases
Section titled “Tips and Edge Cases”- All comparisons are string-based except the numeric operators (
greater than,less than,greater than or equals,less than or equals), which parse both the cell and the comparison value as numbers. If either side can’t be parsed as a number, the condition fails for that row. containsis case-sensitive. “Active” does not match a condition value of “active”. To do case-insensitive matching, add a Computed Column that lowercases the field first, then filter on that.- Empty string vs. null. The
is emptyoperator matches empty strings,null, andundefined. Theequalsoperator with an empty value matches only empty strings, not null. - No conditions = passthrough. If you add a Filter Rows node but don’t define any conditions, all rows pass through unchanged. This is intentional — it lets you set up the node and configure it later without breaking the flow.
Related Transforms
Section titled “Related Transforms”- Select Columns — remove unwanted columns (Filter Rows removes unwanted rows)
- Remove Duplicates — remove duplicate rows based on key columns
- Sort Rows — reorder rows without removing any