The Matrix component renders a cross-tabulated (pivot) table where rows represent one dimension, columns represent a second dimension, and each cell shows an aggregated value at their intersection. Use a matrix when the audience needs to compare a measure across two simultaneous groupings — such as activity count by discipline and month, cost by package and contractor, or resource usage by role and work area.

Data binding
| Property | Description |
|---|
| Section | The data section that provides the rows. |
| Row group | The dimension shown down the left side. Supports up to 3 nested row levels. |
| Column group | The dimension shown across the top. One level of column grouping is standard; two levels are supported for nested column headers. |
| Value field | The numeric measure to aggregate for each row–column intersection. Multiple value fields create multiple rows of values per row group. |
| Aggregation | Sum, Average, Count, Count Distinct, Min, Max, First, Last, or Custom expression. |
Row grouping (stepped layout)
When more than one row group field is configured, the matrix can be displayed in:
| Mode | Description |
|---|
| Stepped layout | Each nested level is indented within the parent level column. All row labels share a single column. |
| Separate columns | Each nested level gets its own dedicated column. Takes more horizontal space but keeps levels visually distinct. |
Subtotals and grand totals
Row subtotals
- Enable a subtotal row at the bottom of each row group band.
- Configure subtotal position: above group or below group.
- Set the subtotal label text independently for each level.
Column subtotals
- Enable a subtotal column at the right of each column group.
- Useful when column groups represent time periods: a cumulative or total column at the end of each quarter.
Grand totals
- Row grand total: A final row at the bottom aggregating all rows.
- Column grand total: A final column at the right aggregating all columns.
- Each grand total uses the same aggregation as the body cells, unless overridden.
Aggregation options
| Aggregation | Description |
|---|
| Sum | Total all values in the cell group. |
| Average | Mean value. |
| Count | Count of rows in the cell group. |
| Count distinct | Count of unique values. |
| Min | Minimum value. |
| Max | Maximum value. |
| First | First value in sort order. |
| Last | Last value in sort order. |
| Custom expression | Enter a DAX-style or formula expression combining fields. |
Matrix cells support the same conditional formatting rules as table cells:
- Cell background color — threshold-based fill.
- Font color and weight — text styling based on value rules.
- Icon sets — RAG traffic light or arrow icons per cell.
- Color scales — gradient fill across the cell range for heatmap-style matrices.
Color scales are particularly effective in matrices: set a 3-color gradient (e.g., green → amber → red) across the entire value range to instantly communicate relative performance across all row–column intersections.
Layout and display options
| Option | Description |
|---|
| Column header orientation | Horizontal (default) or rotated 45°/90° to save space on date or code columns. |
| Frozen row headers | Row labels stay fixed while columns scroll in interactive mode. |
| Empty cell value | What to show for intersections with no data: blank, zero, or a custom string (e.g., "—"). |
| Repeat row headers on page break | Row labels repeat at the start of each PDF page. |
| Alternating row colors | Subtle background alternation for readability. |
When to use a matrix vs. a table
| Use matrix when… | Use table when… |
|---|
| You need to compare values across two dimensions simultaneously. | You need row-level records with many fields per record. |
| The column dimension is dynamic (e.g., months in a period). | Columns are fixed and known in advance. |
| You want a heatmap or color scale across all cells. | You need conditional formatting on specific columns. |