Data tables

Filter, sort, group

Combine filter conditions, sort by multiple fields, group by any field.

Filter basics

Filters are the workhorse of every view. Open the Filter panel; each rule has three parts: field, operator, value. Rules chain with AND by default — wrap them in a group to switch to OR.

Rules apply live; there is no "Apply" button. Delete a rule via the × at the end of the row. For complex queries, prototype in a personal view, then promote once it survives a few days of use.

  • AND / OR / NOT groups nest to any depth
  • Date fields: is today, last 7 days, next month, before 2026-01-01
  • Number fields: >, <, , between, is empty
  • Select fields: is, is any of, is not, contains
  • Relation fields: is linked to, is not linked to, linked count >
  • Checkbox fields: is checked / is unchecked

Filter recipes

Common filter recipes, ready to copy. Kition serializes them to JSON inside the view config.

// "My open tasks due this week"
status is any of [Todo, In progress]
AND owner is "me"
AND due_date is in next 7 days

// "Stale leads we haven't touched"
stage is "Lead"
AND last_contact is before 30 days ago

// "P0 bugs without an owner"
priority is "P0"
AND owner is empty
AND status is not "Closed"

Sort: multi-field priority

Sort by field; with multiple fields, top-to-bottom is priority. Example: priority descending, then due_date ascending — yields "P0 first, earliest due date within each priority".

Sort interacts with grouping: within a group, rules apply; between groups, default is lexicographic on the group value, but you can drag groups to reorder manually.

Group: collapse + aggregate

Group by any select, date, or number field. Each group header shows row count, collapses on click, and supports aggregates (numbers: sum, avg, min, max; any field: count, count unique, % filled).

Kanban is structurally a group-by-select view rendered horizontally — dragging a card to a new column writes the field value. Grid grouping is vertical and collapsible, better for reports like "tasks per owner".

// Reports config: tasks per owner this sprint
Filter:  sprint is "2026-W12"
Group:   owner
Sort:    priority desc, due_date asc
Aggregate header:
  count
  sum(estimate_hours)
  avg(score)

Performance and limits

  • Filter and sort run inside the table engine — well under a second for tables up to 50K rows
  • ai_field is not directly filterable — cache its output to a text column and filter that
  • Filtering on rollup triggers a cross-table join; over 100K rows, add an index in Settings → Tables → Indexes
  • View state stores locally; in team vaults, shared views sync to every member

Related articles

Ready when you are.

Kition is a local-first AI workspace. Markdown documents, structured tables, and an AI agent — running on your own machine, against the model provider you choose.