Dynamic Matrix Heatmap — a Power BI custom visual by TCViz · Version 1.0.0.0 · Last updated: 3 August 2026
Dynamic Matrix Heatmap lets the people reading your report choose their own crosstab. Instead of you building one matrix per combination, they pick the X dimension, the Y dimension and the value from dropdowns inside the visual — no edit rights, no request to a developer.
customer_id) into Distinct count of Pro to count unique values exactly.| Well | Accepts | Limit | Purpose |
|---|---|---|---|
| Dimensions | Any grouping field | 3 Free / 10 Pro | Populates the X and Y dropdowns. Keep cardinality around 20–25 values per field. |
| Measures | Measures or numeric columns | 2 Free / 5 Pro | Values shown in the cells. |
| Distinct count of | Raw ID columns | 3 Pro | The visual counts unique values itself, so the result is exact for every X/Y combination. |
| Card | Setting | What it does |
|---|---|---|
| Values | Aggregation | How rows sharing a cell are combined. Auto reads what Power BI applied to the field; override it for DAX measures, where the aggregation is not readable. |
| Show value as Pro | Absolute, % of row, % of column, % of grand total. | |
| Number format | Auto uses the model's format. Override when the model format is wrong for what is shown. | |
| Show totals Pro | Adds a total row and column, with exact distinct counts in the margins. | |
| Heatmap colors | Minimum / Middle / Maximum | Three-point colour scale, applied globally across every visible cell. |
| Empty cells | Display as | Blank, dash, zero or grey fill. |
| Text | Axis labels, values | Font, size and colour, set separately. |
| Controls bar | Background colour and label font for the dropdown bar. | |
| Layout | Row height | Minimum row height in pixels. |
| Column width | Column width in pixels. | |
| Column header orientation | Horizontal, vertical (90°) or diagonal (45°). |
If you are showing a count of something that can appear in more than one category, use the Distinct count of well with the raw ID column rather than a DAX measure. A distinct count computed at a finer grain cannot be recombined correctly by any client.
This happens when the same field is added twice, once normally and once with "Show value as → Percent of grand total": Power BI marks the underlying column as a percentage and the mark reaches both instances. The visual detects and corrects this automatically. If it persists, set Values → Number format → Number, and check the column's format in your model.
Set Values → Aggregation → Average. Auto-detection reads the field's label and query name, but a DAX measure carries its aggregation inside the DAX where it cannot be read.
The row limit was reached. The visual loads row-level detail in segments to keep distinct counts exact; with many dimensions at once the combinations exceed what Power BI will deliver. Remove a dimension or two.
Check the relationship between the tables in Model view. Filtering from a fact table to a dimension table needs the cross-filter direction set to Both.
Sign out and back into Power BI to refresh entitlement, then reopen the report. If it persists, open an issue with your AppSource order reference.