Skip to content

Non-Data Visuals

Detects decorative elements such as images, shapes, and text boxes that do not display data.

What It Detects

This flag identifies visuals on report pages whose visual type is a known decorative or layout element. Classification is based purely on the visual's type name — the tool does not inspect whether the visual is bound to a data field. Any visual whose type matches the hardcoded list below is counted as a non-data visual:

  • Images (image)
  • Shapes and basic shapes (shape, basicShape)
  • Rectangles (rectangle)
  • Lines (line)
  • Borders (border)
  • Text boxes (textbox)
  • Buttons (actionButton)
  • Containers and grouped visuals (container, group)
  • Background elements (background)

Why It Matters

  • Visual clutter — Non-data visuals contribute to the total visual count on a page, which impacts rendering performance even if they don't generate DAX queries.
  • Maintenance overhead — Decorative elements often need manual updates (e.g., updating a company logo, changing a header text) and can break page layout when the report is resized.
  • Accessibility — Images without alt-text and decorative shapes can confuse screen readers and reduce accessibility compliance.
  • Report file size — Embedded images increase the .pbix file size, making it slower to publish and download.

Trigger Conditions

A visual is counted as non-data purely by its visual type. The type (matched case-insensitively) must be one of: shape, rectangle, basicShape, textbox, actionButton (buttons), image, line, container, background, border, or group. Data field bindings and data roles are not examined, and custom visuals are never counted (their type names are not in the list).

A report page is flagged for this rule when it has more than 10 non-data visuals (11 or more). At more than 20 non-data visuals the page is called out as "Too many". These thresholds are fixed and not configurable.

The backend records a corresponding entry in the page's reasons array:

  • 11–20 non-data visualsModerate number of non-data visuals (N)
  • More than 20 non-data visualsToo many non-data visuals (N)

Any page with more than 10 non-data visuals is also assigned the high severity level.

Threshold: more than 10 non-data visuals per page (11+). Fixed, not user-configurable.


Output

Results are produced per report page (each page is one ReportVisualStats entry). The fields relevant to this flag are:

FieldDescription
idInternal page (section) identifier
displayNamePage name
visualCountTotal number of visuals on the page
tableCountNumber of table visuals on the page
cardCountNumber of card visuals on the page
slicerCountNumber of slicer visuals on the page
nonDataVisualCountNumber of non-data visuals on the page
levelSeverity level: low, medium, or high
reasonsArray of human-readable strings describing why the page was flagged

This is a local .pbix/.pbit analyzer — there is no report-level or workspace-level context in this result, and there is no list of the individual non-data visual types found.


Notes and Edge Cases

  • Branding templates — Many organizations use a standard report template with header images, logos, and footer shapes. These are expected and may not need remediation, but should be tracked.
  • Slicers — Slicers are not counted as non-data visuals; they are tracked separately under the slicer count (slicerCount), even when no field is bound.
  • Custom visuals — Custom visuals are not counted as non-data visuals, because detection is based on built-in visual type names only.
  • Data binding is not checked here — A standard data visual with a missing or unrecognised query is not counted as a non-data visual. That situation is surfaced separately through the page's reasons (a "Visual query structure not recognised" message), not through nonDataVisualCount.