Filter rows
The Filter rows step keeps rows that satisfy a set of rules. You can use this step to create simple filters with one rule, or complex filters with many rules.
Check out this Parabola University video to see the Filter rows step at work.
Input/output
The input data we'll connect to this step has 15 rows of webinar registrants.

Let's say we want to filter this for people who registered after February 1, 2022. By setting a rule to include rows where the value in 'Registration Time' column is greater than or equal to '2022-02-01 00:00:00', we immediately get nine rows of data showing who registered after February 1, 2022.

Custom settings
By default, this step will keep rows only if they follow any of the rules. This means that if a row satisfies one of the rules, that row will be kept. You can change this to keep rows only if they match all of the rules by clicking '+ Add a rule set' and changing 'OR' to 'AND' between them.

Now it's time to set up filters for rows. For each rule, you'll select a column, a filtering condition, and a matching value.
Available filtering settings for different data types
Dates
- Filter dates to (filter dates relative to now or a set date)
- Dropdown options for “filter dates to” include:
- In the last 7 days
- Yesterday
- In this month to date
- In the previous…
- In the current…
- After…
- Between…
- Tip: While our “filter dates to” condition within the Filter Rows step can handle many use cases, you may find yourself wanting to do something more similar to the DATEDIF function in Excel (ie if you want to calculate "Time In Transit" or filter for PO’s with an ETA in your current week). In this case, you may want to use our Compare Dates step instead.
- Dropdown options for “filter dates to” include:
Text Data
- is blank
- is not blank
- is unique (is the value in each row unique within that column)
- is not unique (is the value in each row not unique within that column)
- is equal to
- Text is equal to (equals but assumes text - faster than “is equal to”)
- Text is not equal to (equals but assumes text - faster than “is not equal to”)
- Text contains
- Text does not contain
- Text starts with (matches the first part of a cell)
- Text ends with (matches the last part of a cell)
- Text length is (length of cell = #)
- Text length is greater than (length of cell > #)
- Text length is less than (length of cell < #)
- Text matches pattern (regex match)
- Text does not match pattern (inverted regex match)
Numerical Data
- is equal to
- is not equal to
- is greater than
- is greater than or equal to
- is less than
- is less than or equal to
- is between (between two numbers)
- is not between (not between two numbers)
To add another rule, click on the gray '+ Add a rule set' button to configure another rule.
The 'Text contains', 'Text does not contain', 'Text is equal to', and 'Text is not equal to' filter operations allows multiple criteria fields

You can compare columns inside of your Filter rows steps by entering the column name wrapped in curly braces (e.g.: '{Sub-Total}').

Helpful tips
- Keeping rows between two values: If you need to only keep rows in a column whose values are between two values, then you'd use two separate rules. Let's say I want to keep values in a column that are between 5 and 10 inclusive. I would set one rule to keep all rows that are greater than or equal to 5. I would then set a second rule to keep all rows less than or equal to 10, and select the 'AND' option.
- Filtering dates: The Filter rows step can generally handle filtering for dates that match a certain criteria without any additional date formatting required. However, if you're experiencing any issues with filtering dates, we recommend trying to convert your dates into a Unix format or Lexicographical format. To update your date formats, use a Format dates step before sending your data to the Filter rows step. For Unix format, use capital X for precision to the second and lowercase x for precision to the millisecond. For lexicographical format, use YYYY-MM-DD HH:mm:ss.
- Accounting for text casing: Please note that rules are not case sensitive.
- Reversing the filtering logic: If you set up a filter with multiple rules and wish to instead see the rows that are being removed by the filter, you can reverse your filtering by changing 'Keep rows' to 'Remove rows'.
- Filtering symmetrically: If you need to split your table to create separate branches that will eventually be merged back together to recreate the complete data set, you will use a few Filter rows steps while making sure you're not duplicating or losing any rows in that process. For example, let's say you have data that spans three months (October, November, and December) and you need to process each month differently. You want one Filter rows step per month. A good way to make sure you successfully filtered symmetrically is to use a Stack tables step at the end of your separate branches to merge the data back together. The resulting row count should match the row count of your starting data before the Filter rows steps.
- Text field level options are accessible via the settings cog icon on the right side of any text field: each text field can be toggled to evaluate what has typed in as a math expression, instead of just text. You can type numbers or reference them from columns using {merge tags} so each text field can be toggled to match based on the casing provided, or ignore the casing of the text.