Matrix visual
A Matrix is a pivot: fields in Rows and Columns group the data, and Values shows one or more measures at each intersection. Use it when you need grouping on both axes, subtotals, or a grand total pinned below the grid.
Build a matrix
- Select Edit in the report header. It appears only when you can edit the report; for saving, see Build a report.
- In the Visualizations panel, pick Matrix under Tables & cards; the tile lands on the canvas.
- Drag fields from BI tables into Rows, Columns and Values. Both axes take several fields: each field nests inside the one before it, in the order you place them. For the wells themselves, see Visuals.
- Set the grid up on the Visual tab: its Matrix section holds subtotals, totals, auto-expand, stepped layout and share calculations. See Format a visual.
A matrix with nothing to show reads No rows; when a filter is active, the empty state also offers Clear filters.
Drill into a hierarchy
The toolbar above the grid carries the drill controls.
- Drill on switches the controls between rows and columns. It appears only when both axes can drill; when just one can, the controls use that one.
- Drill down moves one level deeper into the axis's hierarchy, and Drill up trims the deepest level back. A drill replaces the level: the members above it move into the path beside the toolbar, joined with /.
- Click to drill arms click-to-drill. While it is on, selecting a member row makes that member's children the top level of the grid.
- A column group's header carries its own drill control: selecting it drills into the group instead of sorting the column.
- A saved drill path heals itself: when a member it names no longer exists in the data, the path trims back to the last member it can still show, so nothing is matched against the wrong field.
Expand and collapse
- Expand all and Collapse all open or close every group on the axis selected in Drill on.
- Expanding keeps the parent levels on screen, which is the difference from drilling: a drill replaces the level, an expansion opens the next one underneath it.
- Only a column group that carries a subtotal takes part in collapsing; closing a group without one would hide its data outright, so those groups stay open.
- The Matrix section of the Visual tab adds Auto-expand rows, Auto-expand columns and Row +/- icons for the same levels. See Format a visual.
Subtotals and grand totals
- Row subtotals closes each group with a subtotal row carrying the member's name and Total, for example Electronics Total. Row subtotal position moves those rows to the top of their group.
- Column subtotals adds a Total column after each column group's members.
- The row grand total is not a grid row: Row grand total pins it at the bottom of the grid in a sticky footer, where it stays while you scroll.
- All four switches (Row subtotals, Column subtotals, Row grand total, Column grand total) live in the Matrix section of the Visual tab. See Format a visual.
Sort the grid
- Select a sortable column header to order the grid by its field. The grid never reorders its own rows: the click sends the ordering to the query and the visual re-runs, because a local reorder would pull subtotals away from the hierarchy they belong to.
- The sort indicator shows on every header of the sorted field, so a measure sorted by one member reads as sorted under all of them.
- A total column has no ordering to offer: a total is a rollup, not a field you can rank by.
Show values as a share of the parent
- Show value as offers No calculation, % of parent row total and % of parent column total for each value column. With a share on, that value's cells show percentages instead of raw numbers.
- A share cell stays blank when its parent is zero or missing, and cells under the column grand total stay blank too: there is no parent to divide by.
- A subtotal divides by the parent of the group it totals, and a % of parent column share is left out of the column grand total.
Copy the grid and export it
- Copy in the grid toolbar copies the whole result, not just the part you have expanded on screen.
- Include headers and Formatted values in the same menu decide whether headers come along and whether cells copy as displayed or as raw values; the preferences are shared with the grid's own copy button.
- Pasted into a spreadsheet, the result reads flatter than the screen: the row hierarchy widens to one column per level, so a child row keeps its parent's label; headers flatten to one line per level; and a stacked measure names itself in its own trailing column.
- The Copy and Export menus appear when the matrix has drill controls, an export handle or data to copy. Downloads are covered on Export reports and data.
What the grid leaves out
- Rows load in windows: when the window holds more rows, a Load more records footer fetches the next batch. The cap itself is Rows per load under General > Limits; see Visuals.
- A pivot keeps its hierarchy and its subtotals together, so the grid has no page footer, no grid search, no column reordering and no row selection.
- Rows are dense and long text wraps instead of truncating. The row header stays pinned to the left while you scroll sideways, and it cannot be hidden or reordered.
- Column widths are not saved: a width you drag applies while the report is open, and opening the report again lays the columns out afresh.
- With Stepped layout on, every level steps in by 14 px.
Cell colours on a matrix
- Cell and column formatting paint matrix cells the same way they paint a table. The first matching rule wins, a total joins a colour scale only when Include totals is on, and a column tint paints over the cell's own fill so both show. See Cell and column formatting.
- Subtotal rows and total columns take the subtotals scope, and values take the values scope.
- A comparison column inherits the rule and tint of the value it was pivoted from; Diff % takes a setting of its own. See Compare mode.
Filter from a column header
- A header's menu filters the grid from there: a checklist of the dimension's values, plus comparison operators that follow the measure's own type, so a date measure compares as a date rather than a number.
- On a comparison filter the logical OR form is switched off, and a comparison-only column, such as Diff %, offers no value checklist. The same header menu serves Table columns.
Questions, answered
What is the difference between drilling and expanding?
Drilling replaces the level: the member you drill into becomes the top of the grid, and the level you came from moves into the path beside the toolbar. Expanding keeps every parent level on screen and opens the next one underneath it. Drill down, Drill up and Click to drill drill; Expand all and Collapse all expand.
Why did my drill path change after the data changed?
A saved drill path only keeps members that still exist in the data. When a member it names is gone, the path trims back to the last member it can still show, so the grid never matches a member against the wrong field.
Why are the drill controls greyed out?
Each control disables when its action is unavailable. Drill down needs a next level, so an axis with a single field has nothing to drill into; Drill up needs a drill that is in progress; Expand all and Collapse all disable once every group on the axis is already open or closed. The Drill on selector appears only when both axes can drill.
How is a matrix sorted, and why can't I sort by a total?
Select a sortable column header: the ordering goes to the query, the visual re-runs, and the indicator then shows on every header of the sorted field. A total column offers no ordering, because a total is a rollup rather than a field you can rank by.
Why is my "% of parent row total" cell empty?
The cell has no parent to divide by: its parent is zero or missing, or the cell sits under the column grand total. Shares stay blank in those cases rather than showing a wrong ratio.
Where are my subtotals and the row grand total?
Turn on Row subtotals and Row grand total in the Matrix section of the Visual tab. Subtotals close each group with a row carrying the member's name and Total; the row grand total is pinned below the grid in a sticky footer rather than drawn as a row. Column subtotals and Column grand total have switches beside them. See Format a visual.
What does (Blank) mean in a row or column header?
The member is empty in the data: some rows carry no value for that field. Those rows are grouped under (Blank) instead of being dropped.
Why can't I click to drill into a row?
Arm Click to drill first, and pick a row that still has a level beneath it; a member on the deepest level has nothing left to open.
Why is there no paging or search on my matrix?
A pivot keeps its hierarchy and its subtotals together, so the grid has no page footer, no search box, no column reordering and no row selection. More rows arrive through the Load more records footer instead.
Why does my column width reset when I reopen the report?
Column widths are deliberately not saved with a matrix. The grid rebuilds its columns from the fields each time the report opens, so a width you drag applies while the report is open.
How do I copy the whole matrix into a spreadsheet?
Use Copy in the grid toolbar: it copies the whole result, not just the visible window. Include headers and Formatted values in the same menu decide whether headers come along and whether cells copy as displayed or as raw values.
Why does the copied text have more columns than the screen?
That is by design: each level of the row hierarchy gets its own column in the copied text, so a child row never loses its parent's label; headers flatten to one line per level, and a stacked measure names itself in a trailing column.