
Measure Killer
an external tool for Power BI & Microsoft Fabric

-Find and remove all unused columns and measures
-See where a column or measure is used (24 categories)
-Report and model best practice analysis
-Easily search all your DAX expressions
-Easily search all your M Code
-Get a tree view of your dependencies
-Export a documentation of your model and report


Free (Power BI Desktop)
Paid (Power BI Service)

Optimize and clean your shared Power BI semantic models
Everything from above
+
Across all connected Power BI reports
Paginated Reports
Excel files
Downstream/composite models (incl. changes)

Give it a try
-Request a free trial
-Use our sample data built into Measure Killer
-Request a demo
-Add local files (e.g. Excel connected to semantic model)
-Full lineage view (see screenshot on top right)
-Incl. report-level measures
-Report views (last 30 days)
-Average report load times (in seconds)
-Run multiple models at once

Tenant Analysis (Scans your entire tenant)
-Tenant summary
-Model lineage and data source lineage
-Access / Permissions (users and groups)
-Semantic model metadata
-Dataflow metadata
-Report metadata

Tenant summary
-Shows all Power BI and Fabric items
-Provides a list of all workspaces and their items and users

Data source and semantic model + dataflow lineage
-Get an end-to-end lineage from data source to report across workspaces
-Also shows how many models and reports are connected to a source
-You can even search M expressions in this view

Access tab
-Lists all users & AD/Entra groups and their permissions
-Shows all workspaces and who has access to them
-Provides detailed access rights to all Power BI and Fabric items

Semantic models
-Lists all your Power BI models with basic info (size, tables, columns, storage mode etc.)
-Refresh history (date, success/fail etc.), refresh schedule, avg duration
-Best practice analysis (BPA rules, can be customized, soon you can create your own rules too)
-Easily search through all DAX expressions (duplicate detection) and M code

Dataflows (Gen1 and Gen2)
-Lists all your Dataflows with basic info (type, workspace, number of queries)
-Refresh history (date, refresh/fail etc.), refresh schedule, avg duration
-Easily search through all M code

Apps
-Lists all Apps in your tenant (incl. org apps)
-Provides all audiences (incl. which reports belong to it, settings and users/groups assigned)
-Shows you how often each App has been consumed (opened in the last 30 days)
-Provides additional information like Contacts, reports, Excel files that are part of the app etc.
-Also includes contact information, last update as well as descriptions for each app
-Full information on App access (users, groups)

Reports
-Lists all your Power BI reports
-Shows report views and page views
-Number of pages, visuals, custom visuals (certified or not) and average report load times
-Report-level measures

Fabric Notebooks (New in v2.9.1)
-Lists all Notebooks, their location, for Fabric admins also who has access to them
-Gives you the lines of code per notebook
-Audit your Notebooks for individual packages or other keywords

What does Measure Killer detect?
-
Visuals - including filters applied to visuals, on pages or the whole report.
-
Artifacts only used in custom visuals
-
Conditional formatting
-
Any kind of measure (incl. report-level measures) or relationship
-
Columns used exclusively in Power Query, e.g. in joins, appends, references etc.
-
Calculated columns
-
Calculated tables
-
Row-level and object-level security (for OLS see compatibility below)
-
Calculation groups
-
Field parameters
-
Visual calculations
-
Column sorting, key columns, row labels
-
Used in mobile view
-
Used as dynamic M parameter or for change detection in DQ mode
What does not work?
-
If you copy paste whole reports or individual pages and then only do some minor changes, this can in rare cases lead to false references (unfortunately this is an internal issue with Power BI Desktop which even exists with .pbir)
-
Restrictive sensitivity labels (like "confidential") can lead to errors when analyzing local files. The tool can throw a message like "this is not a valid zip file"
-
If you have a column and a measure with the same name and the column is used in a Paginated Report it will also wrongly show the measure as used in the same Paginated Rep.
-
Auto date/time hierarchies used in conditional formatting are not detected
-
Personalized visuals are not detected
-
Using M parameters for connecting to dataflows (lineage) do not show up in the lineage
-
The "Explore this data (Preview)" feature is not detected for any type of usage
-
Using a column only in query string parameters in the URL of a report is not detected
-
DAX user-defined functions are not fully detected in Pro workspaces

Measure Killer Compatibility
legend
✅ fully compatible
? limited compatibility
✗ currently not working
General:
✅ .pbix (Desktop and Desktop RS)
✅ .pbip (Power BI Project files - incl. Enhanced Report Layout)
✅ .pbit
✅ DirectQuery
✅ Composite models
✅ Downstream semantic models (paid versions only)
✅ Thin files / Live connection (paid versions only)
✅ Direct Lake (paid versions only)
✅ Paginated reports (paid versions only)
✅ Analyze in Excel on top of a semantic model (paid versions only)
✅ All connected reports in the Power BI Service (paid versions only)
✅ SSAS and AAS (Tabular only)
✗ Dashboards
✗ .bim files / models stored in a folder etc.
✗ Metrics (Goals)
✗ Exploration items
✗ Activators
Feature compatibility:
✅ Row-level security
✅ Object-level security (table with OLS is identified, columns are not)
✅ Calculation groups
✅ Field parameters
✅ Dynamic format strings
✅ Visual calculations
✗ KPIs (created in the tabular model)
Compatibility of visuals:
✅ Standard visuals (all, unless listed below)
✅ Icon Map
✅ Zebra BI visuals
✅ HTML VizCreator Cert
✅ HTML VizCreator Flex
✅ Balance Sheet Visual
? Other custom visuals (We have not tested Measure Killer for all custom visuals)
✗ Q&A visual
✗ Paginated report visual
✗ Metrics (Goals) visual

Measure Killer pricing
The free version can be used without any restrictions personally and commercially.
Go to the Download section to get started
To unlock paid features inside the application or to get priority support from the Measure Killer team, please purchase a license.
Want to deal with a U.S. entity? Check out resellers like Softchoice or SHI International Corp.
Measure Killer basics (analysis of a single model/report)
Removing unused columns and measures from a shared semantic model
Introduction to Tenant Analysis (scanning your whole Power BI / Fabric tenant)
Measure Killer Security Information and Documentation
Version 2.9.1
Please download our security whitepaper from here.
If you have questions about Measure Killer, you can always get in touch with us
E-Mail: gregor@brunner.bi
Measure Killer - Download and Changelog
Current Version 2.9.1
The store version requires admin rights.
Release notes for 11/26/2025
Version 2.9.1
[FEATURES]
- New end to end data lineage tab (source -> report) + export option
- User-defined functions (UDFs) are now supported in Measure Killer.
- Notebooks and Org Apps in Tenant Analysis
- Text search with highlighting for DAX/M expressions and Fabric content.
- Added best practice violations for Measures and calculated columns individually as well
- Added detection for unused DAX variables.
- Added # of M:N relationships in Tenant Analysis semantic model window
- You can now see exactly where an artifact is used in a visual (Y-axis, categories, conditional formatting etc.).
- New “Locate visual on page” diagram via right-click on visuals
- Users can now export the Duplicate DAX results.
- Added publisher info for all custom visuals.
[BUG FIXES]
- Fixed issue where table Row Level Security was flagged as Object Level Security and its columns were not removed.
- XMLA actions for SSAS Offline Mode are now disabled for Enterprise Limited licenses.
- Corrected selection behavior for Partial Analysis when selecting tables.
- Fixed empty capacity table in the pre-filters window.
- Square brackets and special characters now correctly displayed in the DAX expression view context menu.
- Resolved dependencies attribute error when analyzing model usage in Limited Tenant Analysis.
- Fixed the “Check if bi-directional and many-to-many relationships are valid” rule.
- M functions without the let/in keywords were incorrectly classified as Parameters
- Power BI ports were not detected on some servers and cloud PCs
- Fixed SQLite objects threading issue in Tenant Analysis (Activity Logs and Usage Metrics).
- Lineage fixed for Generation 2 CI/CD dataflows in Limited Tenant Analysis.
- DAX Duplicates were (ironically, lol) displayed twice.
- Fixed “Unused Hidden Visual” suggestion for PBIR report files.
- Empty pre-filters table in Tenant Analysis when switching modes.
- Plots and model state are now correctly registered and displayed in the UI.
- Fixed the “unknown” data type for Report Level Measures.
[MISC]
- Model similarity improvements.
- Added Request IDs from Power BI and Fabric API calls to the logs.
- You can now open the logs folder directly from the tool.
- Disabled tabs now display a tooltip explaining why they are disabled.
- Report-level measures are now ignored when using Partial Analysis.
- Dataflows Gen2 and Gen2 CI/CD are now displayed as separate entities in the Tenant Summary.
- Artifact descriptions added to all relevant Excel and JSON exports.
- Links used in Apps or Org Apps are now parsed.
- Current selected tab is now highlighted.
- Filters and sorting are now preserved after re-running or repopulating tables.
- Added warning when trying to remove a table that is used but has no used columns.
- DAX duplicate detection is no longer case sensitive.
- Hint tooltips added across all modes.
- The authenticated user is now displayed in the tool’s window title for relevant modes.

