Inputs & parameters

Input blocks make dashboards interactive. They write values that other tiles read — through SQL parameters or trigger relationships.

The input store

An input_select or input_range block writes its value to the dashboard input store under its input_id:

json
{ "type": "input_select", "config": { "input_id": "region", "options": [ ... ] } }

After a user picks a value, region holds it in the store.

SQL parameters

An Athena tile binds store values into its SQL with query.params, mapping a SQL token to an input key:

json
"query": {
  "sql": "SELECT * FROM sales WHERE region = :region",
  "params": { "region": "region" }
}

StrataBI substitutes :region with the current value of the region input before the query runs. The substitution is value-quoted, so strings, numbers, booleans, and lists are all handled.

Driving dependent tiles

For a tile to re-run when an input changes, list the input tile in triggered_by and set load.mode to input:

json
{
  "id": "sales",
  "triggered_by": ["region_input"],
  "load": { "mode": "input" },
  "exec": { "type": "athena", "database": "analytics" },
  "query": { "sql": "SELECT ... WHERE region = :region", "params": { "region": "region" } },
  "block": { "type": "table", "config": {} }
}

Source values

Anywhere the schema allows a value, you can defer it to the runtime with a source reference:

json
{ "options": { "?source": "region_options" } }

StrataBI resolves region_options from the source registry, loads the payload from S3, parses it for the expected type (json, dropdown options, markdown, sql, a Plotly figure, …), and substitutes it before the tile runs.

Note
Source values for query.sql are resolved before execution. If you pass a ?source SQL value, StrataBI resolves it first, then applies params.