Capabilities / SQL and exploration

Explore with filters and chart interactions

Design report, page and visual filters, set your own values, and explore with temporary chart selections, relationships, and record identity.

X4 Tech SolutionsUpdated November 1, 202611 min read

Filters define which data a report shows. They work as in Power BI: editors design a report's filters and their defaults, and everyone can set their own values, which only they see and which are kept between visits. Clicking chart marks or table records adds temporary interactions on top.

The filter context is part of query execution. It can change the result without changing the visual's query.

Filters for everyone, and your own values

Editors add a filter by choosing its scope (report, page or visual) and a field from the model, then its kind and default value. A filter's field and scope are fixed once it is created; to filter another field, remove it and add a new one. A filter can be locked (viewers can't change it) or hidden (it applies, but viewers don't see it).

Anyone who can open the report can set their own value for an unlocked filter. Your values replace the defaults for you only, stay until you change them, and Reset to default returns all of yours to the defaults. When an editor publishes a new default, people who set their own value keep theirs; people on the default get the new one on their next load. Changing a filter's kind, lock or hide returns everyone to its default. Public link visitors start from the defaults, and their changes last only for the visit.

The Filters pane

Every page has a Filters pane on the right, in edit mode and in preview, for everyone who can open the page, people with access to single pages included. It lists:

SectionShows
Filters on this visualThe selected native visual's own filters.
Filters on this pageThe page's filters.
Filters on all pagesThe report's filters.
Dataset filtersOn an HTML page, each dataset's filters, read-only with a lock.

Each filter is a card with its name and a one-line summary, such as is West, East, is not (Blank) or in the last 7 days. Hover the name to see the table and field it filters (Orders › Region), and the full name when it's cut short. Open a card to change its value: tick values in a basic filter's list (search it, scroll for more; Select all switches to every value except those you untick), set one or two conditions in an advanced filter, or choose Last, This or Next, a number and a unit in a relative date filter. A value is saved as soon as you choose it (a click, a select, or Enter or leaving a typed condition), and the page's visuals read again. The clear button returns the card to All. Each card's list shows the values the page can show under the other filters, and only what your page can read.

A locked card shows its value with a lock and can't be opened by viewers. A hidden card shows only to editors, marked hidden.

A page opened by public link has the pane too, when it has filters. Visitors see every filter that isn't hidden and change those that aren't locked; each list shows the values the page can show under the other filters. Their values and table sorts last only for the visit: nothing is saved, reloading the page starts again from the defaults, and Reset to default returns the visit to them, its sorts included (the pane's dot counts sorts too). Hidden filters still apply, and visitors never see them.

Clicking a table's column header sorts that table for you: ascending, descending, then back to the table's own order. Like your filter values, your sort is kept between visits and nobody else sees it. A table has no filters of its own in its headers; filter it in the pane.

At the top of the pane, Reset to default returns all of your values and table sorts in the report to the defaults. A dot and Your view differs from the default show whenever one of your values differs from its default or you've sorted a table, on every page, also on the collapsed pane.

In edit mode, editors also get, for what they edit:

  • + Add filter in each section: pick a field, or drag one from the Data panel onto the section. The new filter starts at All. A measure can be added to a visual only.
  • On each card, the lock and eye buttons lock or unlock it and hide it from viewers or show it again; each is highlighted while it's on. Filter type, at the top of the open card, switches its kind among those its field takes (Basic, Advanced, Relative date). The card's ⋮ menu has Rename and Remove. The field can't be changed. Locking or hiding a filter you've set your own value on makes that value its default, so everyone gets what you see.
  • Save as default for everyone: your values that differ from the defaults, on every page, become the defaults. Unity says how many filters change before saving; people who set their own values keep theirs, and your own values return to the new defaults.

An HTML page's dataset filters are fixed with each dataset; editors change them through the assistant. Changes the assistant makes to filters or to your values show in your open page at once; other people's open pages show them on their next load.

Example prompt
Add a page filter on the order date for the last 3 months, locked for
viewers. Then show me what the page's visuals read with it.

Use a 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; fixed, for everyone.
Runtime interactionTemporary exploration based on selected chart marks or records.

A filter on a field of a table a query reads applies directly. Filtering a different table requires a supported active relationship path. A mixed-source report can therefore contain queries the filter cannot reach. A filter on a measure belongs to one visual or HTML dataset and applies at the grain of its groups, whether or not the visual shows the measure.

Unity shows Not filtered on affected content when a filter cannot reach its query, on public links too, where a hidden filter is named only as "a filter". Read the indicator to see which restriction was not applied. A visual with no matching rows is different from a visual that could not be filtered.

Choose a kind

KindKeeps
BasicThe values you tick, (Blank) included; starting from Select all keeps every value except those you untick.
AdvancedOne or two conditions joined by And or Or. Text: is, is not, contains, does not contain, starts with, does not start with, is blank, is not blank. Numbers, dates and measures: is, is not, less than, less than or equal, greater than, greater than or equal, is blank, is not blank.
Relative dateThe last or next N whole days, weeks, months, quarters or years, or this one, counted from today in UTC. Weeks start on Monday; "last 1 month" on 30 October is September.

A measure takes an advanced filter. A true-or-false field takes a basic filter. On a date and time, is compares the day. 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.

Text and Blank values

Saved text comparisons use Unity's consistent report rules: case, trailing ordinary spaces, width, and kana variants can match the same value. Accents remain meaningful. Contains, starts with, and ends with ignore case only. See Query inspection for examples.

The (Blank) choice includes NULL, empty text, and text containing only ordinary spaces (U+0020). Tabs and non-breaking spaces are not blank. A filter such as “does not contain East” retains Blank unless you explicitly exclude Blank too. “Is”, “is not” and comparisons treat Blank as Power BI does, as zero (or empty text, or the date 1899-12-30): “less than 5” and “is not East” keep Blank, “is not 0” drops it. A filter on a measure keeps a blank value only when it asks for blanks (is blank). As in Power BI, Blank also stands for rows with no related row: under a filter on employees' role, an order with no employee (or with one the employees table doesn't have) counts as Blank. So is not Manager, is blank and the list's (Blank) keep those orders, and the list offers (Blank) whenever such rows exist. Clicking a blank bar or row in a visual filters to them the same way, and clicking False in a true/false field also selects Blank, as in Power BI. An authored SQL WHERE predicate still follows SQL NULL rules, so it can differ from that choice.

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. As in Power BI, the clicked visual's own filters go with the selection: clicking a bar of a chart filtered to Online sales shows the other visuals that bar's Online sales.

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.

An AI connected to Unity reads a visual as after a click by passing the click to QueryReportData (interactionFilters): it gets the same data you see. A click names one of the group outputs of another visual on the same page; Unity refuses anything else, as a click on a value, on another page's visual or on the visual being read filters nothing on the canvas.

Select a detail record

A table row selects all of its group outputs. To select one record, group the table by a unique field such as an order ID; the column can be hidden from the table's display.

For a custom HTML visual, bind the actual returned row with unity.bind or use unity.activate for canvas interactions. A click filters by the row's group outputs; Unity builds the filter from the dataset's stored query. 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 propagate compatible filters in their cross-filter direction: from the to (key) end to the from end, and both ways when the relationship is set to Both.

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. Cross-source entities can share report relationships, but the field identities and paths must be valid. 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. An HTML page adds its datasets' filters.

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 filter is an analytical control, hidden or not. It is not a replacement for report permissions, page visibility, or source-enforced row-level security: people who can open a report can also query its model.

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 respondThe datasets it reads, the clicked query's groups, and a relationship path.
A click filters too many rowsThe clicked query's groups: a row filters by every group it shows, not by a record key.
A cleared chip still leaves restricted dataPersistent filters at other scopes.
HTML table search seems partialServer query/window state; a query's Top N still restricts the dataset.
A table's sort differs for someone elseA header click sorts the table for you only, and is kept for your next visit; Reset to default in the filter pane returns it to the table's own order.
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.