CSV / TSV
Inspection
This group looks at a loaded CSV/TSV table without changing it: count its rows, list its column headers, guess the data type of each column, list the distinct values in a column, preview the first few rows, or find which cells are empty. Every instruction here reads the table and saves an answer — none of them modify the document.
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 read 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 read from. 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.
-
Loaded with headers vs. without. A table opened with headers has named columns; a table opened without headers is just rows of plain values with no column names. Three instructions need named columns — Get Column Headers, Detect Column Types, and Get Unique Column Values — and find nothing on a headerless table. The other three work either way: Count Rows and Preview First Rows don’t care about columns, and Detect Empty Cells falls back to positional names (
Column 1,Column 2, …) when there are no headers. -
This group only reads — it never changes the document. The way you keep an answer is the Save … field: type a name and the result is stored under it for later instructions to use with
@name. Leave a Save … field empty and that result is simply not saved. -
Row numbers are 1-based. Where an instruction reports row positions (Detect Empty Cells), the first data row is row
1. -
Dynamic values
@name: the text fields (Column name, Document key) accept a saved value — type@followed by its name and the engine substitutes it at run time. -
“From variable” fields: the numeric Row count (in Preview First Rows) has a companion Row count key field — a number field can’t take
@name, so this is its equivalent:- If you leave it 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. If you only work with fixed values, you can ignore it.
- Count Rows .csv
- Detect Column Types .csv
- Detect Empty Cells .csv
- Get Column Headers .csv
- Get Unique Column Values .csv
- Iterate Rows .csv
- Preview First Rows .csv
- Read Cell Value .csv
Count Rows .csv
Counts the number of data rows in the loaded table and saves it.
When to use it: to know how big a table is — to report a total, or to drive a later decision on the row count.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Save count key | Saves the row count under this name for later instructions | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. The count is the number of data rows (header rows aren’t data and aren’t counted); it works whether the table was loaded with or without headers.
Detect Column Types .csv
Examines every value in each column and guesses that column’s data type, then saves a column→type map.
When to use it: to understand an unfamiliar table — which columns are numbers, dates, yes/no flags, or free text — before validating, filtering, or converting them.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Save result key | Saves the column→type result under this name | (empty) | No |
Important behavior: this needs a table loaded with headers; an empty or headerless table
saves nothing. Blank cells are ignored when deciding a type. Each column is labeled with the
most specific type that fits every non-blank value: Empty (no values at all), Boolean
(all true/false), Integer (all whole numbers), Decimal (all numbers), Date/Time (all
dates), or otherwise Text.
Detect Empty Cells .csv
Scans the whole table for empty or blank cells and saves them grouped by column, with the 1-based row number of each.
When to use it: for a data-quality check — to find missing values before importing, validating, or reporting on the table.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Save result key | Saves the column→empty-row-numbers result under this name | (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. The result maps each column to the list of row numbers
where it is empty (row 1 = first data row). On a table loaded with headers columns are named;
on a table loaded without headers they are positional (Column 1, Column 2, …).
Get Column Headers .csv
Lists the column names of a table loaded with headers, and saves both the list and how many there are.
When to use it: to discover a table’s columns before working with it — e.g. to check a column exists, or to loop over the headers.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Save headers key | Saves the list of column names under this name | (empty) | No |
| Save count key | Saves the number of columns found | (empty) | No |
Important behavior: this needs a table loaded with headers. If the document is empty or was loaded without headers (no named columns), nothing is saved. The names are taken from the first row and kept in their original order.
Get Unique Column Values .csv
Lists the distinct values found in one column (sorted alphabetically) and saves the list and its size.
When to use it: to see the set of categories in a column — the list of countries, statuses, or product codes actually present — or to count how many distinct values there are.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Column name | The column whose distinct values are collected (accepts @name) |
(empty) | Yes |
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Save array key | Saves the list of distinct values under this name | (empty) | No |
| Save count key | Saves the number of distinct values found | (empty) | No |
Important behavior: if Column name is empty, or the column isn’t in the table (including
when the table was loaded without headers), the instruction does nothing. Values are compared
exactly (Apple and apple count as two different values) and returned sorted alphabetically.
Iterate Rows .csv
Publishes every row of the file into a variable, so a For Each can walk them one by one.
When to use it: whenever something has to be done per row — calculate a line, write it into a document, decide with an If. It is the natural start of a loop over a file: before this instruction the way to get turns was Preview First Rows, which only ever gave the first few.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document | Document the instruction applies to | (current document) | No |
| Save key | Name of the variable that receives the rows. Empty = the instruction does nothing useful | (empty) | No |
| Save count key | Name of the variable that receives how many rows there are | (empty) | No |
Each turn is a row whose fields are the column names of the file, so inside the loop they are
read as @row.column.
Important behavior: the turns are a copy taken when the instruction runs: what the loop walks does not change if the body edits the document. To leave a result back in the row, write it by position — the Index of the For Each feeds the “(from variable)” field of the writing instruction. In this format that instruction is Write Cell Value, whose Row number (from variable) takes the loop’s index.
Preview First Rows .csv
Copies the first few rows of the table so you can inspect its structure, and saves them along with how many were taken.
When to use it: to peek at a large table’s shape and content before running heavier processing on it.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document key | The loaded CSV/TSV to read. Empty = current document (accepts @name) |
(empty) | No |
| Row count | How many rows from the top to preview | 5 |
No |
| Row count (from variable) | Reads the number of rows from a saved value instead of the field above | (empty) | No |
| Save array key | Saves the previewed rows under this name | (empty) | No |
| Save count key | Saves how many rows were actually taken | (empty) | No |
Important behavior: if the document isn’t loaded, nothing happens. It previews up to Row count rows, or fewer if the table is shorter — Save count key holds the number actually taken. It works on a table loaded with or without headers.
Read Cell Value .csv
Saves the value of one cell: the row by its position, the column by its name.
When to use it: to take one datum out of the file and use it later — a total, an identifier, the name in the first row.
| Parameter | Meaning | Default | Required |
|---|---|---|---|
| Document | Document the instruction applies to | (current document) | No |
| Row number | Row to read, counting from 1. -1 = the last row |
1 |
No |
| Column name | Name of the column. Supports @name |
(empty) | Yes |
| Row number (from variable) | Reads the row from a saved value | (empty) | No |
| Save value key | Name to save the value under | (empty) | No |
| Save found key | Name to save yes/no (is the column there) under | (empty) | No |
Important behavior: this instruction reads only. Column names are matched ignoring capitals. A row that does not exist saves nothing; a column that does not exist saves an empty value and “found” as No.
This documentation is the help of the application, and it comes underCreative Commons Attribution 4.0.