Columns Input
The Columns Input is a comma-separated list of FlyQL column expressions. Each entry must reference a column declared on the source — unknown columns surface as inline diagnostics in the editor.
A single entry may include:
- A column name (or dotted path into a JSON / Map column).
- Zero or more transformers chained with
|— they reshape the value before display. - An optional alias with
as— the header label in the table. - Zero or more renderers chained with
|after the alias — they control how the value is rendered (escape vs. HTML).
messagemessage|chars(25) as msglabels.'app.kubernetes.io/component' as comppayload|json as p|highlighturl as link|href("https://example.com/${value}")See the FlyQL transformers reference and renderers reference for the full pipeline grammar.
Renderers require an alias
Section titled “Renderers require an alias”Renderers (highlight, hl, href) only attach after an as alias clause. Pipes before the alias are transformers, pipes after are renderers:
payload|json as p|highlight ✓ json is a transformer, highlight is a rendererpayload|json|highlight ✗ both treated as transformers, highlight is rejectedThis is enforced by the editor — a chained renderer without an alias is flagged as a syntax error.
Nested paths (JSON, Map, Array)
Section titled “Nested paths (JSON, Map, Array)”For columns whose source type is JSON, JSONString, or Map (Kubernetes labels/annotations/body, ClickHouse JSON/JSONString/Map(...), etc.), use dot notation to extract nested keys:
rest.app.request.bytesmetadata.request_idlabels.'app.kubernetes.io/component'Quote a segment with single quotes when it contains dots, slashes, or other special characters. The FlyQL nested keys docs cover the grammar in detail.
The editor will suggest discovered nested keys for JSON-typed columns as you type — driven by a sample of recent rows from the underlying datastore.
Transformers available in Telescope
Section titled “Transformers available in Telescope”Transformers are evaluated in the browser (display-side) by Telescope; not all are pushed down to SQL. The full list:
| Name | Purpose |
|---|---|
chars(from[, to]) | Substring by character index. |
slice(from[, to]) | Substring (alias for chars with the standard slice convention). |
lines(from[, to]) | Slice of lines from a multi-line value. |
firstline | First line of a multi-line value. |
lastline | Last line of a multi-line value. |
oneline | Strip newlines, collapse to a single line. |
lower | Lowercase. |
upper | Uppercase. |
split(sep) | Split a string into an array. |
join(sep) | Join an array back into a string. |
json | Parse a string as JSON. |
str | Coerce a value to its JSON-string representation. |
type | The value’s runtime type (string, number, array, …). |
fmt([lang]) / format([lang]) | Pretty-print as JSON or SQL (auto-detected if lang is omitted). |
lower, upper, and split are also pushed down to SQL on ClickHouse and StarRocks sources, so they can appear in query filters too. The remaining transformers are display-only — using them in a query filter raises an error.
Renderers available in Telescope
Section titled “Renderers available in Telescope”Renderers control how the post-alias value is rendered into the result cell. Telescope ships three:
| Name | Purpose |
|---|---|
highlight([lang]) / hl([lang]) | Apply syntax highlighting via highlight.js — useful with ` |
href(template[, displayValue]) | Render the cell as an <a> tag. template may include ${value}. |
Only one renderer may be chained per column. Renderers do not affect query evaluation — they’re purely a display concern.
Examples
Section titled “Examples”# Show only the first 80 chars of the messagemessage|chars(80) as msg
# Pull a tab-separated JSON payload out of a log line and render highlightedmessage|split("\t")|slice(-1)|join|fmt as payload|highlight
# Link an order ID to an external systemorder_id as order|href("https://orders.internal/${value}")
# Extract a specific Kubernetes labellabels.'app.kubernetes.io/component' as comp