Column Explorer
One card per column, each with a chart you can click to filter. This page walks through the three card types on the ecommerce sample, with the real numbers.
Opening a card
Hover a column header in the grid and click the small Explore & filter icon. The card opens in a strip above the grid, 260 by 270 pixels, and stays there until you close it. Open as many as you like; the strip scrolls sideways and has a collapse toggle so you can tuck the cards away without losing them. Every card recomputes when a filter or pipeline step changes the rows underneath.
The examples use ecommerce.csv from the templates: 170 orders, loaded as the table ecommerce.
Text columns: a bar per value
Open status. The card runs a GROUP BY and draws one bar per distinct value, most frequent first, with the count beside it:
| value | count |
|---|---|
| delivered | 38 |
| cancelled | 37 |
| returned | 35 |
| shipped | 34 |
| placed | 26 |
Booleans get the same card, true and false as two bars. A column with hundreds of values loads a page at a time as you scroll, with a N unique values line so you know how many there are in all; the Search values... box narrows the list. This is where I find the cleaning work: USA, usa and United States sitting on three separate bars is a Find & Replace job before anything else.
Click a bar to select it, shift-click for a run of bars, ctrl-click (cmd on a Mac) to pick several, then press the Apply filter icon that appears on the card. Double-click a bar to filter on it straight away. Either way the grid shrinks to the matching rows and the card shows the filter with a clear button.
Number columns: a histogram and five figures
Open total. The card first asks DuckDB for the summary, then bins the values:
SELECT MIN("total"), MAX("total"), AVG("total"), SUM("total"), STDDEV("total"),
COUNT(*) FILTER (WHERE "total" IS NULL) FROM "ecommerce"
| Stat | Value for total | What it tells you |
|---|---|---|
| Sum | 57,311.92 | Every order added up. For a money column this is the headline number. |
| Avg | 337.13 | Sum divided by the 170 non-empty rows. Skewed by a few large orders, so read it with Min and Max. |
| StDev | 176.77 | Sample standard deviation. Roughly two thirds of orders sit within 176.77 of the average, between about 160 and 514. |
| Min | 20.36 | The smallest order. A zero or a negative here usually means a refund row or a bad export. |
| Max | 635.82 | The largest order. If this were 63,582 I would go looking for a missing decimal point. |
| Nulls | not shown | Only appears when the column has empty cells. This one has none. |
Below the figures is the histogram. The card picks a bar width to give a readable number of bars, and the bin-width control lets you change it. At a width of 100 the orders bucket like this:
| range | orders |
|---|---|
| 0 to 100 | 19 |
| 100 to 200 | 27 |
| 200 to 300 | 32 |
| 300 to 400 | 23 |
| 400 to 500 | 31 |
| 500 to 600 | 25 |
| 600 to 700 | 13 |
A flat spread like that is unusual in real sales data, which normally piles up at the low end with a long right tail. Whole-number columns such as items (1 to 7) get whole-number bins. Double-click a bar to filter to that range. To take a wider range, click one bar, shift-click another or drag across several, then press Apply filter.
Date columns: rows over time
Open order_date. The card groups by date_trunc('month', "order_date") to begin with and draws a bar per period:
| month | orders |
|---|---|
| Jan 24 | 15 |
| Feb 24 | 15 |
| Mar 24 | 16 |
| Apr 24 to Oct 24 | 16 or 17 each |
| Nov 24 | 11 |
The buttons on the card switch the grain between day, week, month, quarter and year. At quarter the same column reads Q1 46, Q2 48, Q3 49, Q4 27, and the short Q4 is the first thing I would ask about: the file ends on 21 November. Double-click a bar to filter to that period, or select a run of bars with shift-click and press Apply filter for a range.
Filters stack
Filters from different cards combine with AND. Filter status to delivered, then country to Brazil, and the grid holds the 14 delivered Brazilian orders; the total card now sums 4,777.36. Each card clears its own filter. A card filter is not a pipeline step, so it does not travel with the exported SQL. When I want a filter to stick, I rebuild it as a Filter step.