Escribal
Back to Docs

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) Cat and cat are 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

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.