SF logo
Power BI toolkit

Model Linter

Best-practice checks on your model export: measures without a folder or format string, visible key columns, bidirectional relationships, implicit measures, unused columns and measures, and, with a PBIP folder, report checks such as alt text and crowded pages. Each finding says why it matters and how to fix it in Power BI Desktop. No AI needed.

Step1

Your model export

The checks read the model’s definition: tables, columns, measures, relationships and model settings. Nothing about your data.

The model export query (the same one the other toolkit pages use)
  1. In Power BI Desktop, open DAX query view, paste this query and select Run.
  2. Above the results grid, select Copy, then paste below.
DAX query: model export

          
Dependencies from Power BI (optional: the most complete check for unused measures and columns)

The linter reads the DAX of your measures to see what uses what. Power BI keeps its own dependency list too, including calculation groups, security roles and anything the linter might misread. Run this second query to use it.

DAX query: dependencies

          

Report pages (optional)

Connected with a PBIP folder above? Its report pages are read from it too, so there’s nothing to add here. Otherwise, choose the project folder (or its .Report folder) of a report saved as a Power BI Project. Visible columns and every measure are then checked against each visual, filter, formatting rule and bookmark in it, and the report checks run: alt text, titles, hidden visuals, unused bookmarks, empty and crowded pages. If the folder also holds the semantic model, its field parameters are read so measures used only there count as used. If the folder holds several projects, you pick which reports to check, and each is read with its own semantic model. Files are read on this page; nothing is uploaded.

or drop the folder here
Step2

Choose the checks

Turn off any rule your team doesn’t follow. Hidden measures and columns are skipped where hiding already solves the problem.

Step3

Findings

Fix   Worth a look. Select Ignore on anything that’s intended; it stays ignored the next time you check this model.

Where is it used? (look up any measure or column)