← All articles

Reports & charts

Reports turn your tables into saved, shareable answers: tabular summaries, KPI cards, and bar or line charts that pull fields, follow relations, roll up related records, and compute formulas — with grouping, filtering, and CSV export. Start smart: reports arrive pre-built A new report is never an empty shell. RowFold reads the base table and seeds a sensible starting shape: a Select field becomes the grouping axis (or a Date field, bucketed by month), the first money or number field becomes a real sum aggregation so the KPI cards and totals row light up immediately, and the visualization is picked to match — a bar chart for grouped shapes, KPI cards when it's all numbers. Switching the base table re-seeds fresh defaults for the new table instead of wiping you back to nothing. From there, sculpt: every column, filter, grouping, and sort is yours to change. Aggregate the table's own rows Aggregation columns can now point at this table as well as related ones. Pick This table as the source to add “sum of Amount”, “average Deal size”, or a plain record count over the report's own (filtered) rows — that's what powers KPI totals like Total revenue without needing a second table. Cross-table rollups (“count of Deals via company”) work exactly as before, and both kinds respect grouping: each group row shows its own slice. Create a report Open Reports & dashboards in the rail, switch to Reports, and click + New report. RowFold builds a starter report from your workspace's most-connected table — a category column and a numeric column when the table has them, plus up to three counts of related records — and drops you straight into the editor. If the workspace has no tables yet, you're sent to create one first. Each saved report appears as a card on the Reports page, which also shows a quick workspace overview: table, record, relation, and teammate counts. Clicking a card opens the read-only view; the Edit button there takes you back to the editor. Pick a visualization The tabs at the top of the editor switch how the report renders: Table, KPI, or Bar. • Table lists every row, with a Total line for aggregation and formula columns. • KPI shows one big number per aggregation or formula column — its total across all rows (an average column shows the average). It needs at least one of those column kinds. • Bar charts every numeric column as a series, with a Bar/Line toggle. It needs at least one numeric column. Click Save to keep changes to the name, emoji, base table, visualization, grouping, and sort. The Live preview panel shows the report against your real data as you build it. Add columns A report is a list of columns. Pick a kind, give it a Label, fill in that kind's controls, and click + Add column. • Field — a value straight from a column on the base table, or the record's name. • Lookup — follow a Relation field on the base table and pull a value (or the record name) from the linked record. • Aggregation — roll up records from another table that link back to this one: count, sum, avg, min, or max. count ignores the value field; the other four need a numeric field to aggregate. • Formula — arithmetic over other columns, referenced by label, e.g. [Pipeline $] / [Deals]. Operators: + - * / ( ). Remove a column with the × button — any filters, grouping, or sort that used it are cleaned up automatically. The Base table picker sets which table the report reads from; changing it clears all columns and filters, so choose it first. Group and sort Group by collapses rows that share a value in one column into a single line per value. Numeric columns re-aggregate within each group (sums, or the aggregation's own operation for avg/min/max columns); text columns show the shared value, or a count like 3 values when members differ. The first column shows how many records each group contains, and formula columns don't appear in the Group by picker. When the grouped column holds dates, pick a period — By day, By week, By month, By quarter, or By year — to see totals over time, such as revenue by month. Exact value groups by the precise date instead. Bucketed groups come out in chronological order unless you set an explicit sort. Sort orders rows by any column, ascending or descending — numerically when both values are numbers, alphabetically otherwise. Cross-tab: group down the side and along the top Set a second group column and a report becomes a cross-tab: the first grouping runs down the side, the second along the top, and one measure fills the grid — revenue by region by quarter, in a single table. Choose the measure under Matrix measure; it is deliberately one number, because a cell holding six columns is a spreadsheet rather than a cross-tab. An empty cell reads —, never 0: nothing landing there is a different fact from a measured zero, and the CSV exports it empty for the same reason. Row totals, column totals and the corner are all computed over the records themselves rather than by adding up the cells, so an average column doesn't turn into an average of averages. Filter rows Click + Filter (available once the report has at least one column) to add a rule: a column, an operator, and a value. Click Save filters to apply. Operators cover equality (=, ≠), text (contains), numeric comparisons (>, <, ≥, ≤), and blank checks (is empty, is not empty — these need no value, so the value box greys out). For date columns, in last … days and in next … days take a number of days and match a rolling window that includes today. With more than one filter, a Match selector appears: all keeps rows that pass every rule; any keeps rows that pass at least one. Filters run in the database wherever they can, so a filtered report reads the whole table rather than a slice of it. A filter that reaches through a lookup, a rollup or a formula can't be run there — those values are computed while the report is being built, so they don't exist yet — and a report using one falls back to the first 20,000 records and says so at the top. If you hit that, filtering on a stored field instead removes the limit. Filter the groups, not just the rows An ordinary filter narrows the records — “amount is over 10,000” keeps the big deals. A group filter narrows the groups: “only the regions that billed over 10,000”, which is a different question and was previously unaskable. It uses the same builder and the same operators, because a grouped row is still a row — its values are the aggregates in each column. Groups are dropped before anything else is built from them, so the totals at the foot always add up to the rows above, and a column that empties disappears from a cross-tab rather than lingering with a total nothing accounts for. Report on a period, and compare it Pick the field that decides whether a record falls in the period — an order has an ordered date, a shipped date and a paid date, and each gives a different answer, so RowFold asks rather than guessing. Then pick the window: This month, Last month, This quarter, This year, Last 7/30/90 days, Last 12 months, or All time — eight windows and the default. Then answer “compared to what”. Previous period steps back by the window's own kind — this February against January entire, not against 28 days straddling two months — and Same period last year is the one a seasonal business usually wants, since December against November says little about a toy shop. Each KPI and each group then carries its change. Growth from nothing says up from nothing rather than inventing a percentage, and a group that wasn't there last time reads new. The arrow shows direction only — a report has no way of knowing whether the column is revenue or refunds. Periods are resolved on the workspace's timezone, so two people in different countries see the same set of records, and the window is half-open, so two adjacent quarters never double-count the day between them. Chart multiple series In the Bar visualization, every numeric column becomes a series with its own chip above the chart. Only the first series starts on; click chips to toggle others, and at least one always stays on. Each series keeps a fixed color, so turning one off never recolors the rest — the chips double as the legend. Hover, tap, or keyboard-focus a point to read every visible series at that position in one tooltip. All series share a single axis, so pick series with comparable scales. Switch between Bar and Line with the toggle above the chart. Click a mark to see the records behind it Bars and points are a way into the data, not just a picture of it. • Where one record sits behind a mark, clicking it opens that record in the peek drawer. • Where a group sits behind it, clicking opens the list of that group's records on the same drawer stack — so clicking a row pushes the record on top, and ← Back returns you to the list rather than dead-ending on the first thing you opened. The list is paged from the server and its header counts the whole group, not the page you can see. The group is worked out by re-running the same grouping the chart used, so it is exact, and it is current: a bucket that has emptied since the chart was drawn comes back empty and says so, rather than showing you a stale list. Share and export Every member of the workspace can open a report. Cards on the Reports page link to the read-only view — the same numbers and chart without the editing controls — so it's the page to send teammates. Reports honor field permissions per viewer: a field hidden from someone stays blank in their copy, even when reached through a lookup, and hidden numbers can't leak through sum/avg/min/max (counts still work). Export CSV on the read-only view downloads the current result as a spreadsheet-ready file. Grouped reports export the group label with its record count, and values with commas or quotes are escaped so columns line up in Excel. Have it emailed to you on a schedule Press Subscribe on a report and it arrives in your inbox every day, every week on a weekday you choose, or monthly on the 1st — as a PDF or a CSV, at an hour you pick in your own timezone. A subscription is yours, not the report's: subscribing does not sign your colleagues up, and each person's copy is computed with their own permissions, so a report emailed to you can never contain a column you would not be shown on screen. Pause it with the toggle; delete it to stop entirely. If the report is deleted, or you lose access to it, the subscription simply stops sending. Publish it to a link Publish gives a report a public web address at an unguessable token, for a client, an accountant or a board member who has no RowFold login. You can set an expiry date and choose whether the page offers a CSV download. It starts switched off — you turn it on when you're ready. The columns are frozen at the moment you publish, and that is the whole security model. Add a column later and it is not merely hidden from the public page: its data is never computed for a public request at all. The same goes for a grouping or sort column that wasn't published, or its values would reappear as row headings. Re-publish when you mean to widen the link. Unknown, switched-off, expired and deleted links all render the same closed page on purpose: a message distinguishing them would confirm to a stranger that a token had once been real. Turn a link off and the address is dead immediately. Delete a report Click Delete report at the bottom of the editor and confirm. Deleting is permanent — there's no undo — but it removes only the report definition; the records in your tables are untouched. Ask for a report in chat The fastest way to a report is to describe it: tell Ask RowFold “revenue by month as a report I can share” and it proposes name, columns, grouping, filters, and chart type on a card. Confirm and the saved report exists at Reports, chart and CSV export included. Two more paths land in the same place: answers that ran an aggregation grow a 💾 Save as report button, and any dashboard metric tile built with “Build a metric” has a Save as report page button in its configuration. Tips • Choose the <strong>Base table</strong> before anything else — changing it later clears every column and filter. • Group a date column <strong>By month</strong> and add a <code>sum</code> aggregation to get a totals-over-time chart. • A <code>count</code> aggregation needs no value field — leave it on <strong>— none (count only) —</strong>. • Report cards open the read-only view; click <strong>Edit</strong> there to change the definition. • In a formula, reference other columns exactly by their label: <code>[Pipeline $] / [Deals]</code>. • Saving filters no longer touches the rest of the report — the header form and the filter form each save only what they own. • Reports over very large tables read the first 20,000 records; the preview notes when a report was truncated. • A period narrows the read in the database before the row ceiling applies, so a monthly report over a very large table is exact where an all-time one may be sampled. Good to know • Changing the <strong>Base table</strong> wipes the report's columns and filters immediately — there is no undo. • Formulas match columns by label text: a token that matches no column is treated as 0, so relabeling a column silently changes formulas that referenced the old label. • KPI view only shows aggregation and formula columns; plain field and lookup columns don't get a card. • Numeric filter operators (>, <, ≥, ≤) never match when either the cell or the filter value isn't a number. • Only the first chart series starts visible — extra series stay hidden until someone toggles their chips. • The same report can show different numbers to different people, because hidden fields render blank per viewer. • Deleting a report is permanent; export a CSV first if you need a snapshot of the current result. • A comparison needs a real period: “All time vs previous” is refused when you save, rather than silently comparing against nothing every time it runs. • Publishing freezes the columns. If a colleague adds a column to a shared report later, the public link keeps showing what you published until somebody publishes again. Who can do what • Reports belong to a workspace; only members of that workspace can see, open, edit, or export them — non-members get nothing, not even the report's name. • Any workspace member, regardless of role (including Viewers), can create, edit, and delete reports — there is no report-specific role gate. • Field permissions carry into reports per viewer: a field hidden from you renders blank (even when reached through a lookup), sum/avg/min/max over a hidden field show 0, and count is unaffected.
Nothing here answered it? Ask us directly — we usually reply within one working day.

Made with RowFold