Explore with filters and chart interactions
Use saved filter scopes, temporary chart selections, HTML bindings, relationships, and record identity.
Filters define which data a report shows. Unity supports persistent filters at several scopes and temporary interactions created by clicking chart marks or table records.
The filter context is part of query execution. It can change the result without rewriting the visual's authored SQL.
Apply a saved filter
- Open the report's filter controls.
- Choose the intended scope: report, page, visual, or an HTML dataset/visual registration.
- Select a field from the relevant model.
- Choose an operator and enter values of the correct type.
- Save the filter and wait for affected visuals to refresh.
- Inspect the result and clear unrelated temporary selections if needed.
Apply a report-level date filter for the current reporting period using
the model's order date field. Preserve other filters and explain which
pages and datasets the filter can affect.
Use a saved filter when the restriction should remain part of the report. Use a temporary interaction for exploration.
Filter scopes
| Scope | Applies to |
|---|---|
| Report | Compatible visual and dataset queries across report pages. |
| Page | Compatible queries within one native or HTML page. |
| Native visual | One saved native visual. |
| HTML dataset | Consumers of a registered dataset. |
| HTML visual | One registered visual's execution context. |
| Runtime interaction | Temporary exploration based on selected chart marks or records. |
A report-level filter does not guarantee that every connection in a mixed-source report can resolve the same field. Each query uses its connection, model, and applicable lineage.
Choose an operator
Available choices depend on field type and filter surface.
| Comparison | Supported forms in the HTML filter contract |
|---|---|
| Equality | equals, not_equals |
| Numeric order | gt, gte, lt, lte |
| Dates and times | before, after, on_or_before, on_or_after |
| Text | contains, not_contains, starts_with, ends_with |
| Sets and ranges | in, not_in, between |
| Missing values | is_null, is_not_null |
Use exact model field identity when authoring a filter through tools. Do not invent source relationships or treat a display label as a field ID.
Explore with chart clicks
Click a bound mark to apply its supported runtime selection. Unity shows selection and filter feedback on the source visual and refreshes affected content.
Click the same selection again, or clear its filter chip, to return to the authored baseline. Clearing a temporary selection does not delete a saved report filter.
In HTML Edit mode, a bound click can select the visual for Assistant / Adjust / Data and apply its cross-filter. In View mode, marks filter normally; the explicit Inspect toggle allows inspection without applying a filter.
These interactions do not create a saved document revision.
Select a detail record
A detail table can select a record through a complete, proven source key. The query must project all parts of that key, even if the columns are hidden from the table's display.
Without complete key lineage, a clicked value can provide a supported cell-value filter but cannot be assumed to identify a unique source row.
For a custom HTML visual, bind the actual returned row with unity.bind or use unity.activate for canvas interactions. Pass the original date, number, or key values; formatted text such as “Aug” is not a replacement for the query's date value.
Follow model relationships
Active model relationships can propagate compatible filters in both directions. Their cardinality describes row matching, not filter direction.
Unity uses model identity and query lineage to apply supported key-based restrictions. Conflicting relationship paths, ambiguous output expressions, or incomplete lineage can prevent reliable propagation.
A relationship does not automatically solve join fanout or cross-connection analysis. Review the semantic model when filters behave unexpectedly.
Combine saved and temporary context
A visual can be affected by its own filter, a page filter, a report filter, and a current interaction at the same time. HTML adds dataset and visual registration scopes.
An empty result may be the valid intersection of those restrictions. Inspect each scope before changing the query.
Explain why this visual is empty. Inspect its query and every applicable
filter scope, including runtime selections. Identify the restriction
that removes the rows before proposing a change.
Distinguish filtering from access control
A visible filter is an analytical control. It is not a replacement for report permissions, page visibility, or source-enforced row-level security.
Report collaborators execute through the attached connection's authorized path. Sharing a report does not automatically create separate database identities for each person.
See Sharing and access and Data and AI.
Troubleshoot an interaction
| Symptom | Check |
|---|---|
| One visual does not respond | Compatible source, registered bindings, filterable lineage, and relationship path. |
| A click filters too many rows | Value selection versus a proven complete record key. |
| A cleared chip still leaves restricted data | Persistent filters at other scopes. |
| HTML table search seems partial | Server query/window state; an authored limit still restricts the dataset. |
| A preview differs from the open page | Isolated previews do not necessarily reproduce your temporary selections. |
Demonstrations
See these capabilities in a recorded product workflow.
Questions about your environment? Contact us.