Skip to content

Consider Merging Cards into a Matrix

Detects pages where a group of single-measure Card visuals share the same visual-level filter signature and could be consolidated into a single Matrix visual.

What It Detects

This flag identifies report pages where a group of single-measure Card visuals share the same visual-level filter signature. Each Card likely generates a separate DAX query. Consider replacing these Cards with a single Matrix visual and placing the measures in the Values field to reduce query count and improve performance.


Why It Matters

  • Excessive DAX queries — Every Card visual generates its own DAX query against the dataset. A page with 10 Cards means 10 separate queries, even when they share the same filter context.
  • Slower page rendering — More queries means longer page load times, especially on large datasets or when slicers are applied.
  • Simplified maintenance — A single Matrix visual with multiple measures is easier to format, align, and update than a collection of individual Cards.
  • Better user experience — A Matrix provides a more compact and scannable layout for displaying multiple KPIs side by side.

Trigger Conditions

A group of cards on a page is flagged when:

  1. There are at least 6 Card visuals in the same group on the same report page.
  2. The Card visuals share the same visual-level filter signature (the same per-visual filters configured on each Card).
  3. Each Card displays a single measure.

Cards are grouped by a signature built solely from each card's own visual-level filters array. Slicers and page-level filters are not part of the comparison. Only visuals whose type is card are considered; KPI and multi-row card visuals are excluded, as are cards that do not resolve to exactly one measure.

Threshold: ≥ 6 single-measure Card visuals sharing the same visual-level filter signature on a page. (This threshold is fixed in the analyzer and is not user-configurable.)


Output

Each finding is returned unchanged from the analyzer with the following fields:

FieldDescription
pageNamePage internal name
pageDisplayNamePage display name
severitymedium or high (high when groupSize ≥ 8, otherwise medium)
groupSizeCount of single-measure Card visuals in the group
estimatedSavedQueriesEstimated DAX queries saved by merging (groupSize − 1)
measureNamesMeasures displayed across the cards in the group
visualIdsIDs of the Card visuals in the group
filterSignatureSerialized visual-level filter context used to group the cards

There is no report name, workspace name, cardCount, or measures field.


Notes and Edge Cases

  • Intentional design — Some report designs intentionally use individual Cards for visual emphasis or conditional formatting per KPI. Evaluate whether consolidation fits the design intent.
  • Different filter contexts — Cards with different visual-level filters produce different signatures and are grouped (and evaluated) separately, so they are never merged into the same finding.
  • Excluded visual types — KPI and multi-row card visuals are excluded, and cards that do not resolve to exactly one measure are ignored to avoid false positives.
  • Custom Card visuals — Third-party Card visuals may not be detected by this flag.