Capabilities / SQL and exploration

Explore with filters and chart interactions

Use saved filter scopes, temporary chart selections, HTML bindings, relationships, and record identity.

X4 Tech SolutionsUpdated September 10, 20264 min read

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

  1. Open the report's filter controls.
  2. Choose the intended scope: report, page, visual, or an HTML dataset/visual registration.
  3. Select a field from the relevant model.
  4. Choose an operator and enter values of the correct type.
  5. Save the filter and wait for affected visuals to refresh.
  6. Inspect the result and clear unrelated temporary selections if needed.
Example prompt
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

ScopeApplies to
ReportCompatible visual and dataset queries across report pages.
PageCompatible queries within one native or HTML page.
Native visualOne saved native visual.
HTML datasetConsumers of a registered dataset.
HTML visualOne registered visual's execution context.
Runtime interactionTemporary 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.

ComparisonSupported forms in the HTML filter contract
Equalityequals, not_equals
Numeric ordergt, gte, lt, lte
Dates and timesbefore, after, on_or_before, on_or_after
Textcontains, not_contains, starts_with, ends_with
Sets and rangesin, not_in, between
Missing valuesis_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.

Example prompt
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

SymptomCheck
One visual does not respondCompatible source, registered bindings, filterable lineage, and relationship path.
A click filters too many rowsValue selection versus a proven complete record key.
A cleared chip still leaves restricted dataPersistent filters at other scopes.
HTML table search seems partialServer query/window state; an authored limit still restricts the dataset.
A preview differs from the open pageIsolated previews do not necessarily reproduce your temporary selections.

Demonstrations

See these capabilities in a recorded product workflow.

  1. Connected analysis and visual refinement · recorded example

Questions about your environment? Contact us.