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 visuals →
Moderate number of non-data visuals (N) - More than 20 non-data visuals →
Too 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:
| Field | Description |
|---|---|
id | Internal page (section) identifier |
displayName | Page name |
visualCount | Total number of visuals on the page |
tableCount | Number of table visuals on the page |
cardCount | Number of card visuals on the page |
slicerCount | Number of slicer visuals on the page |
nonDataVisualCount | Number of non-data visuals on the page |
level | Severity level: low, medium, or high |
reasons | Array 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 throughnonDataVisualCount.
Related Flags
- Excessive Visuals — High total visual count on a page, including non-data visuals.