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 that are not bound to any data field — they do not query the dataset and exist purely for layout or decoration purposes. These include:

  • Images and logos
  • Shapes (rectangles, lines, dividers)
  • Text boxes with static text
  • Blank/spacer visuals
  • Decorative HTML content visuals

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 flagged as non-data when:

  1. The visual has no data field bindings (no columns or measures in any data role: values, axis, legend, filters).
  2. The visual type is one of: image, shape, textbox, basicShape, html, or any custom visual with zero data roles populated.

A report page is included in the output when it has 5 or more non-data visuals.

Threshold: ≥ 5 non-data visuals per page (default).


Output

FieldDescription
reportNameReport name
pageNamePage name
nonDataVisualCountNumber of non-data visuals on the page
totalVisualCountTotal visuals on the page (for context)
nonDataTypesList of non-data visual types found (e.g., "image, shape, textbox")
workspaceNameWorkspace name

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 vs. text boxes — A slicer with no field bound is flagged as non-data. Ensure slicers are properly connected to a column.
  • Custom visuals — Some custom visuals may not report their data bindings through the standard API. These may be falsely flagged.