FlatQL
Sign in Start free

Result views: grid, chart, pivot, JSON and DSL

Every statement you run lands in one result pane with five views. Switch between them without re-running the query.

One result, five views#

Run a statement with ⌘↵ and the result pane opens under the editor. A segmented control at the top left switches between Table, Chart, Pivot, JSON and DSL. The rows are fetched once; the views are different ways of looking at the same rows, so switching is instant.

The example below is used for the rest of this page:

SELECT currency, status, COUNT(*) AS orders, SUM(amount) AS revenue
FROM orders
WHERE placed_at >= '2026-01-01'
GROUP BY currency, status
ORDER BY revenue DESC
LIMIT 500;

The cluster runs the filter and the grouping as a composite aggregation; the engine only sorts the buckets. The DSL view shows exactly that split.

Next to the view switcher you see the row count, the number of matching documents when the cluster reports it, and how long the statement took. The buttons on the right copy the result as JSON, open the download menu, maximise the result pane and run the statement again.

Table#

The grid is the default view for any statement that returns rows.

Sorting. Click a column header to cycle through ascending, descending and unsorted. The column menu (the three dots on the header) offers explicit Sort ascending and Sort descending. Sorting a SQL result is local to the loaded rows; add ORDER BY to the statement when you need the cluster to sort the full set.

Column menu. Each header has a menu with:

Action What it does
Copy column name Puts the field name on the clipboard
Show column stats/filters Adds a row under the header with the two most common values and their share
Freeze columns up to … Pins this column and the ones to its left while you scroll sideways
Hide column Removes the column from the grid

Column picker. The columns icon in the toolbar opens a searchable list where you tick the columns to show. Hidden columns are counted on the icon so you can tell the grid is filtered.

Cell inspector. Click a cell that holds an object or an array and a side panel opens with the value as a collapsible tree or as text, with a copy button. Drag its edge to resize it.

Remembered views. Hidden columns, frozen columns, local sort and the stats toggle are saved per worksheet in your browser and come back the next time you open that worksheet. They are not stored on the server and are not shared with team members.

Chart#

The Chart view draws the loaded rows with a settings panel on the left. Pick a chart type (bar, line, area or scatter), an X-axis column and one or more Y-axis columns. The defaults are chosen for you: the first non-numeric column becomes X and the first numeric column becomes Y.

Other settings:

  • Aggregate: Sum, Average, Min, Max, Count or None. When several rows share an X value, the aggregate decides how they combine.
  • Group by: splits the Y value into one series per distinct value of another column. Up to 8 series are drawn; smaller ones fold into Other.
  • Sort: by X or Y, ascending or descending.
  • Flip orientation for horizontal bars.
  • Abbreviate large numbers, axis labels with editable text, and data labels on the marks.

Chart settings are remembered per worksheet in the browser. To export the chart data, download the result as CSV; the chart itself is not exported as an image.

Pivot#

The Pivot view cross-tabulates the loaded rows. Choose a Rows column, an optional Columns column, a Values column and an aggregate (Sum, Average, Min, Max or Count). Totals per row and column and a grand total can be switched on.

For the example statement, Rows = currency, Columns = status, Values = revenue, Aggregate = Sum gives a currency-by-status revenue table in one click, without rewriting the SQL.

The pivot shows at most 2,000 row keys and 200 column keys. When a result has more, the table is cut and a note tells you so; add a filter or group in SQL first.

JSON#

The JSON view shows the full response as returned to the browser, including the columns, the rows and the metadata about the run. It is the view FlatQL falls back to when a statement returns no rows (for example an error or a raw Elasticsearch request with no hits). Use it to check the exact value types the cluster returned.

DSL#

The DSL view is Show as DSL for the statement you just ran. For every index touched it lists the request body sent to the cluster as Query DSL, the mode used (a filtered search, a composite aggregation, a scan) and how many rows came back. A collapsed Statement as executed by the engine block shows the SQL the embedded engine ran over those rows, and a link opens the same run in query history.

When part of a WHERE clause could not be sent to the cluster, the note at the top says so and tells you how many rows were scanned instead. That is the first place to look when a statement is slower than expected; the pushdown rules explain what translates.

Copying a result#

The copy button in the toolbar puts the result on the clipboard as JSON. For a spreadsheet, use the download menu and pick CSV or Excel; see Export.

Next#

Last updated 2026-11-04

Guides

How FlatQL handles the jobs Elasticsearch makes hard.