Skip to main content

Matrix Component

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.

Report Forge matrix component example

Data binding

PropertyDescription
SectionThe data section that provides the rows.
Row groupThe dimension shown down the left side. Supports up to 3 nested row levels.
Column groupThe dimension shown across the top. One level of column grouping is standard; two levels are supported for nested column headers.
Value fieldThe numeric measure to aggregate for each row–column intersection. Multiple value fields create multiple rows of values per row group.
AggregationSum, 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:

ModeDescription
Stepped layoutEach nested level is indented within the parent level column. All row labels share a single column.
Separate columnsEach 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

AggregationDescription
SumTotal all values in the cell group.
AverageMean value.
CountCount of rows in the cell group.
Count distinctCount of unique values.
MinMinimum value.
MaxMaximum value.
FirstFirst value in sort order.
LastLast value in sort order.
Custom expressionEnter a DAX-style or formula expression combining fields.

Conditional formatting

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

OptionDescription
Column header orientationHorizontal (default) or rotated 45°/90° to save space on date or code columns.
Frozen row headersRow labels stay fixed while columns scroll in interactive mode.
Empty cell valueWhat to show for intersections with no data: blank, zero, or a custom string (e.g., "—").
Repeat row headers on page breakRow labels repeat at the start of each PDF page.
Alternating row colorsSubtle 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.