Declaring a parameter
Ask the agent for it in plain language — “make region a filter”, “scope this to the signed-in user’s team” — and it declares the parameter when it builds the query. You can also review and adjust declarations in the query editor’s Params panel, beside the SQL. Each parameter has:Using a parameter in SQL
Reference a parameter with a colon placeholder —:region. Bag of words binds the value safely (never string-substituted), so a parameter can’t be used for SQL injection.
(:region IS NULL OR region = :region) shape is the idiom for an optional filter: when the control is set to a value, only those rows return; when it’s cleared (NULL), all rows return. A list parameter uses IN instead:
Each connector binds parameters in its own dialect — a DAX measure filter for Power BI, a bound parameter for SQL sources. You write the query in the source’s language; the placeholder is the same
:name everywhere.Where a value comes from
Every parameter draws its value from one of three sources. This is the setting that turns an ordinary filter into a personalized one.input
The viewer sets it from a control on the dashboard. A plain interactive filter.
identity
The value is bound to the viewer’s identity and resolved server-side per person. It is never editable and never sent from the browser.
input_identity_default
Defaults to the viewer’s identity, but the viewer can override it with a control — personal by default, explorable when allowed.
team to the viewer’s team and everyone opens the same artifact but sees only their team’s rows. Because identity parameters resolve on the server, a viewer cannot read or change another person’s value. See personalization.
Giving a control its choices
A control that offers a fixed set of values needs to know that set. There are two ways to supply it, and one rule.- Static options — a list you declare on the parameter (
Rock,Jazz,Classical). - Options source — another query in the same report supplies the choices: point the parameter at that query and name its value and label columns. A
Genresquery can feed the genre control of anAlbums by Genrequery.
What the viewer experiences
On a dashboard, each declaredinput parameter renders as a control at the top of the artifact. Changing it re-runs the consuming queries and refreshes the affected visualizations in place — the rest of the dashboard is untouched. Identity parameters render as a read-only “scoped to you” note rather than a control.
Results are cached per viewer and per set of values, so re-opening a dashboard with the same inputs is instant, while a new combination runs fresh.
Related
Dashboard artifacts
Interactive controls, per-viewer personalization, and View-as.
Authentication and Access
Per-user connections, so a source enforces its own row-level security.
