CSV / TSV
Filtering
This group keeps or removes whole rows of a loaded CSV/TSV table based on a condition: match an exact value, a number range, a date range, a piece of text, two combined conditions, empty cells, duplicate rows, or a range of positions. Every instruction here shrinks the table in place — the rows that don’t pass are dropped — and can save how many rows remain.
Prerequisite: a CSV/TSV document must already be loaded — created with Create CSV/TSV file or opened with one of the Reading instructions. These instructions filter an existing document; they do not open files themselves.
These concepts recur across the instructions in this group; they are explained here once.
-
Document: the Document key points to the loaded CSV/TSV these instructions filter. If you leave it empty, the current document is used (the one instructions work on by default). If the key isn’t loaded, the instruction does nothing.
-
These instructions remove rows. Filtering keeps the rows that pass the condition and deletes the rest from the loaded table. The change stays with the document and is written out when it is saved. To filter without losing the original, load a copy or save under a new name afterward.
-
Most work on named columns. Filter By Exact Value / Numeric Range / Date Range / Text / Multiple Conditions / Empty Cells target a column by name, so the table must have been loaded with headers. On a table loaded without headers they find no named columns and keep every row. Two instructions are the exception: Filter Duplicates and Select Rows By Position look at whole rows / positions and work with or without headers.
-
Column not found = nothing is removed. If the Column name you give isn’t in the table, no row matches the condition and the table is left unchanged.
-
Save a result (
saveCountKey): every instruction can save how many rows remain after filtering under the name you type in Save count key, for later instructions to use with@name. Leave it empty and the count is simply not saved. -
Dynamic values
@name: the text fields (Column name, Value, Search text, From date, and so on) accept a saved value — type@followed by its name and the engine substitutes it at run time. -
Case sensitivity: the text-matching instructions have a Case sensitive yes/no field. Left off (the default)
Catandcatare treated as the same; turned on they must match exactly. -
“From variable” fields: Filter By Numeric Range (Min, Max) and Select Rows By Position (From row, To row) have number fields, each with a companion …key field. A number field can’t take
@name, so this is its equivalent:- If you leave the …key field empty, the number typed in the normal field is used.
- If you fill it in with the name of a saved value, the engine ignores the normal field and reads the number from that variable.
This is mainly for chaining instructions — e.g. compute a threshold earlier and feed it in as the range limit. If you only work with fixed values, you can ignore it.
- Delete Rows By Position .csv
- Filter By Date Range .csv
- Filter By Empty Cells .csv
- Filter By Exact Value .csv
- Filter By Multiple Conditions .csv
- Filter By Numeric Range .csv
- Filter By Text .csv
- Filter Duplicates .csv
- Select Rows By Position .csv
Delete Rows By Position .csv
Deletes rows by their position, from one row to another.
When to use it: to drop a heading block, a totals row at the end, or a range you already located — until now rows could only be dropped by filtering on their content.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document | Document the instruction applies to | (current document) | No |
| From row | First row to delete, counting from 1 | 1 |
No |
| To row | Last row to delete. -1 = to the end |
-1 |
No |
| From row (from variable) | Reads the first row from a saved value | (empty) | No |
| To row (from variable) | Reads the last row from a saved value | (empty) | No |
| Save count key | Name to save how many were deleted under | (empty) | No |
Important behavior: the range includes both ends. -1 in To row reaches the end of the file, and -1 in both fields deletes the last row. A range that starts past the end, or ends before it starts, does nothing and saves nothing.
Filter By Date Range .csv
Keeps only the rows whose date column falls within a date range, and drops the rest.
When to use it: to narrow a table to a period — e.g. keep only orders placed in a given quarter or year.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The date column tested (accepts @name) |
(empty) | Yes |
| From date | Start of the range, inclusive (accepts @name) |
2000-01-01 |
No |
| To date | End of the range, inclusive (accepts @name) |
2099-12-31 |
No |
| Date format | The format the dates are written in (accepts @name) |
yyyy-MM-dd |
No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens.
The whole instruction is skipped if From date or To date doesn’t match Date format. A row is kept
only when its cell parses with Date format and falls between the two dates (inclusive); rows whose
cell is blank or doesn’t match the format are dropped. Format letters: dd day, MM month, yyyy
year, HH hour, mm minute.
Filter By Empty Cells .csv
Keeps or discards rows that have empty cells in one or more columns.
When to use it: to drop incomplete rows before analysis (default), or to isolate exactly the rows that are missing data so you can review or fix them.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column names | Comma-separated columns to check. Leave empty to check every column (accepts @name) |
(empty) | No |
| Keep empty rows | If yes, keep the rows with empty cells; if no, discard them | no |
No |
| Keep empty rows (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. A cell counts as empty when it is missing or contains only spaces. A row “has an empty cell” if any of the checked columns is blank. With Keep empty rows off (the default) those rows are removed; turn it on to keep only those rows and drop the complete ones. Leaving Column names empty checks all columns of the table.
Filter By Exact Value .csv
Keeps only the rows where a column exactly equals a given value, and drops the rest.
When to use it: to isolate one category — e.g. keep only rows where Status is Active or
Country is Spain.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column tested (accepts @name) |
(empty) | Yes |
| Value | The value a row’s cell must equal (accepts @name) |
(empty) | No |
| Case sensitive | If yes, Active and active are treated as different |
no |
No |
| Case sensitive (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens. The match is against the whole cell, not part of it (use Filter By Text for partial matches). Matching ignores case by default; turn Case sensitive on to match exactly. Leaving Value empty keeps the rows whose cell is empty.
Filter By Multiple Conditions .csv
Keeps rows that satisfy two conditions combined with AND or OR.
When to use it: for a two-part filter in one step — e.g. Country is Spain and Status
is Active, or Priority is High or Priority is Urgent.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column name A | First column tested (accepts @name) |
(empty) | Yes |
| Value A | Value the first column must equal (accepts @name) |
(empty) | No |
| Column name B | Second column tested (accepts @name) |
(empty) | Yes |
| Value B | Value the second column must equal (accepts @name) |
(empty) | No |
| Logic operator | AND (both must match) or OR (either matches) (accepts @name) |
AND |
No |
| Case sensitive | If yes, values must match case exactly | no |
No |
| Case sensitive (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if either Column name A or Column name B is empty (or the document isn’t
loaded) nothing happens. Each condition is an exact whole-cell match. Logic operator is AND
unless you type OR exactly (case-insensitive); any other text falls back to AND. Matching
ignores case by default; turn Case sensitive on to match exactly.
Filter By Numeric Range .csv
Keeps only the rows whose numeric column falls between a minimum and maximum (inclusive).
When to use it: to keep rows within a value band — e.g. prices between 10 and 50, or ages
18–65.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The numeric column tested (accepts @name) |
(empty) | Yes |
| Min | Lower bound, inclusive | 0 |
No |
| Max | Upper bound, inclusive | 100 |
No |
| Min (from variable) | (from variable) reads the lower bound from a saved value instead of the field above | (empty) | No |
| Max (from variable) | (from variable) reads the upper bound from a saved value instead of the field above | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens. A row is kept only when its cell reads as a number between Min and Max (both included); cells that aren’t numbers are dropped.
Filter By Text .csv
Keeps rows where a text column contains, starts with, or ends with a given string.
When to use it: for a partial-text filter — e.g. keep rows whose Email ends with @acme.com
or whose Name contains Ltd.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Column name | The column searched (accepts @name) |
(empty) | Yes |
| Search text | The text looked for (accepts @name) |
(empty) | No |
| Match mode | contains, startswith, or endswith (accepts @name) |
contains |
No |
| Case sensitive | If yes, matching is case-exact | no |
No |
| Case sensitive (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if Column name is empty (or the document isn’t loaded) nothing happens. An
unrecognized Match mode falls back to contains. Matching ignores case by default; turn Case
sensitive on to match exactly. Leaving Search text empty keeps every row (every cell “contains”
an empty string).
Filter Duplicates .csv
Removes duplicate rows, keeping either the first or the last occurrence of each.
When to use it: to de-duplicate a table where the same record appears more than once — e.g. merged exports with repeated entries.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| Keep last | If yes, keep the last copy of each duplicate; if no, keep the first | no |
No |
| Keep last (from variable) | Reads the yes/no value from a saved value | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. Two rows are duplicates when all their values match; the original row order of the kept rows is preserved. This instruction needs no column name and works whether the table was loaded with or without headers.
Select Rows By Position .csv
Keeps only the rows in a range of positions (counted from 1), and drops the rest.
When to use it: to take a slice of the table by position — e.g. the first 100 rows, or rows
51–100 — regardless of their contents.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to filter. Empty = current document (accepts @name) |
(empty) | No |
| From row | First position to keep, counting from 1 (inclusive) | 1 |
No |
| To row | Last position to keep (inclusive) | 10 |
No |
| From row (from variable) | (from variable) reads the first position from a saved value instead of the field above | (empty) | No |
| To row (from variable) | (from variable) reads the last position from a saved value instead of the field above | (empty) | No |
| Save count key | Saves how many rows remain | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. Positions are 1-based and
both ends are included — From row 1 and To row 10 keep the first ten rows. This instruction needs
no column name and works whether the table was loaded with or without headers.
This documentation is the help of the application, and it comes underCreative Commons Attribution 4.0.