Let people filter results. Keep SQL private.
Write one query and choose which values people can change. Dynamic filters turn regions, dates and amounts into simple controls, so each person can get the results they need without editing your SQL.
Use filters shared with you on a free account. Create filters on Personal Plus ($30/month) and above.
One saved query. Four ways to find the rows you need.
Choose a region for the team.
Keep the region. Move the due date forward.
Find larger invoices in another region.
Choose paid invoices instead.
Choose your own values, then run the query.
Examples change every 9 seconds. Change any control to take over.
Author view shows the execution preview. Recipients see controls and results. Choose your values, then press Run query.
SELECT invoice, customer, region, amount, due, status FROM ar.invoices WHERE region = 'North' AND due >= '2026-10-01' AND amount > 1000 AND status IN ('Open', 'Overdue') ORDER BY invoice DESC
Your changes, in the results
| Invoice | Customer | Region | Amount | Due | Status | |
|---|---|---|---|---|---|---|
| 1 | INV-20481 | Halden Logistics | North | 12,480.00 | 23 Oct 2026 | Open |
| 2 | INV-20480 | Mirren & Co | West | 3,215.50 | 23 Oct 2026 | Open |
| 3 | INV-20479 | Castellan Foods | South | 28,900.00 | 21 Oct 2026 | Overdue |
| 4 | INV-20478 | Oriel Dental | North | 1,140.00 | 20 Oct 2026 | Paid |
| 5 | INV-20477 | Wexford Marine | East | 9,765.25 | 19 Oct 2026 | Open |
| 6 | INV-20476 | Pell & Hartley | West | 4,400.00 | 18 Oct 2026 | Paid |
| 2 | INV-20475 | Northgate Clinics | North | 17,320.80 | 17 Oct 2026 | Overdue |
| 8 | INV-20474 | Brightwater Ltd | South | 2,050.00 | 16 Oct 2026 | Paid |
| No matching invoices. Try a different region, date, amount or status. | ||||||
North · due from 1 Oct · over 1,000 · Open / Overdue
One saved query, different values for each run. You keep control of the logic; people choose only the filters you expose.
The right control for each value.
Query Streams looks at the type of each value in your WHERE clause and offers the control that fits it. You decide which ones to expose.
Text choices
A text value becomes a select box. Type the options in yourself, or fill the list live from another query.
Dates and ranges
Date comparisons and BETWEEN ranges become calendar pickers, one for the start and one for the end.
Numbers and thresholds
Thresholds, amounts and quantities become checked number inputs with a sensible default.
Multiple selections
An IN list becomes a set of choices you can tick. The list in the query grows and shrinks to match what was ticked.
Use ordinary SQL or named parameters.
Let Query Streams find the values in ordinary SQL, or name them yourself. Both work in the same query.
Write ordinary SQL and switch filters on
No special syntax. The values are found for you; in the query's Properties tab you choose which become controls and set their labels, defaults and drop-down options.
SELECT invoice, customer, amount, due FROM ar.invoices WHERE customer = 'Halden Logistics' AND due BETWEEN '2026-10-01' AND '2026-10-31'
Or name each filter with an @ variable
Name a parameter yourself when you want full control over its label, default and allowed values from the start. Mix named parameters with found values in one query.
SELECT invoice, customer, amount, due FROM ar.invoices WHERE region = @region AND due >= @from_date AND status IN (@statuses)
They choose. They never touch the SQL.
Grant someone permission to run a query and choose which filters they can set. They receive the results without getting your SQL code or database credentials. The Network Agent executes the query inside your network.
- Only the values you allowThey can change a region or a date. They cannot edit the query's logic, its tables or its columns.
- Read-only, enforcedOnly SELECT-type statements run. The agent refuses anything else before the database sees it.
- The login never leavesDatabase credentials stay encrypted on the agent. Spreadsheets, browsers and apps receive results, never the connection.
- Stop any timeRemove a person's access in the web portal and it ends at once.
Where the controls appear.
The same saved query, the same filters, wherever the people who run it work.

In a spreadsheet
Run a saved query in Excel or Google Sheets. Results arrive as ordinary cells, ready for formulas, charts and pivots. Refresh when you need current figures.
The filters sit in the Query Streams side pane.| Customer | Amount | Status |
|---|---|---|
| Halden Logistics | 12,480.00 | Open |
| Castellan Foods | 28,900.00 | Overdue |
| Northgate Clinics | 17,320.80 | Overdue |
| Product | Available | Reorder at |
|---|---|---|
| Packing boxes | 12 | 50 |
| Label rolls | 8 | 20 |
| Mailer bags | 24 | 40 |
| Order | Customer | Status |
|---|---|---|
| ORD-7731 | Halden Logistics | Ready |
| ORD-7724 | Castellan Foods | Picking |
| ORD-7719 | Northgate Clinics | Waiting |

On a phone or in a browser
Open saved-query results wherever you work. Set the allowed filters, press Run, and read the rows in the Data Viewer.
Exposed filters appear above the rows.| Customer | Amount | Status |
|---|---|---|
| Halden Logistics | 12,480.00 | Open |
| Castellan Foods | 28,900.00 | Overdue |
| Northgate Clinics | 17,320.80 | Overdue |
| Product | Available | Reorder at |
|---|---|---|
| Packing boxes | 12 | 50 |
| Label rolls | 8 | 20 |
| Mailer bags | 24 | 40 |
| Order | Customer | Status |
|---|---|---|
| ORD-7731 | Halden Logistics | Ready |
| ORD-7724 | Castellan Foods | Picking |
| ORD-7719 | Northgate Clinics | Waiting |

Through a REST API
Give your apps, vendors or factories targeted query results. Their software receives the allowed data; your SQL and source credentials stay private.
Each exposed filter becomes a request parameter.GET /v1/queries/vendor-invoices?due=this-month200 OK{
"rows": 1,
"data": [
{"invoice":"INV-20481","amount":12480,"status":"Open"}
]
}GET /v1/queries/factory-reorder?warehouse=Berlin200 OK{
"rows": 2,
"data": [
{"product":"Packing boxes","available":12},
{"product":"Label rolls","available":8}
]
}GET /v1/queries/partner-dispatch?ship_to=Montreal200 OK{
"rows": 1,
"data": [
{"order":"ORD-7731","status":"Ready"}
]
}Who needs which plan.
Recipients can use the filters you give them on a free account. Authors need a plan that includes filter creation.
Anyone you have given permission to run a query uses its filters on a free account. No seat to buy. Sending run access requires sharing slots on your plan; see pricing for the allowance.
Adding Dynamic filters to your own saved queries, found or named, starts on Personal Plus. Recipients on Free can still use the filters on queries shared with them.
Questions people ask about filters
Do the people using the filters need a database login?
No. The agent inside your network holds the database connection and its credentials stay encrypted there. People see the filter controls and the results, never a connection string, a table name or the SQL.
Which kinds of filter are there?
Text values become drop-downs, dates become date pickers, numbers become number boxes and IN lists become pick-lists. Each is worked out from the value's type in your WHERE clause.
Can I control what appears in a drop-down?
Yes. Type a fixed list of options in the query's Properties tab, or fill the list from another SQL query that returns the allowed values.
Do I have to use @ variables?
No. Ordinary SQL is enough; the values are found for you. Use an @ variable when you want to name the filter and set its label, type and default yourself. Both can sit in the same query.
Can several people run the same query with different filters at once?
Yes. Each person runs the same saved query with their own values at the same time, and one person can run it several times into separate worksheet tabs.
Give people useful choices. Keep the query yours.
Create filters on Personal Plus and above. The people you grant run access to can use a free account.

