Measure Killer
an external tool for Power BI & Micrsoft Fabric
Cleaning up your Power BI tenant
Measure Killer can help you clean and optimize your tenant and datasets. This can drastically reduce dataset refresh times and thus lower the memory and CPU usage of your Premium capacity. You can run our tool on all models in your tenant to remove unused columns and measures.
​
This mode shows you on a tenant level in which reports custom visuals are used or what is going on in personal workspaces. It can analyze the whole tenant in a short time and provide unique insights regarding report-level measures, calculated columns or best practices violations. There is also a new access tab showing workspace, artifact and user-level access.
​
Deleting unused measures
Measure Killer can identify and remove unused measures. The tool can write to the model directly to remove them. Don't worry if you made a mistake, the restore feature can help you out.
​
​
Deleting unused columns
Measure Killer will generate an M-Code to delete unused columns. This code can be pasted into Power Query's Advanced Editor to remove these columns from the model. Calculated columns can be removed directly by writing to the model (locally or in the Power BI Service)
​
Analyzing reports
For every report analyzed, Measure Killer will generate a comprehensive Excel file to show where an artifact is used. This can be in: Measures, Visuals, Filters, Conditional Formatting, joins in Power Query, or other parts of a Power BI Report such as Relationships.
​
What does Measure Killer detect?
-
Visuals - including filters applied to visuals, on pages or the whole report.
-
Artifacts only used in custom visuals (see compatibility matrix below for details)
-
Any kind of measure or relationship
-
Columns used exclusively in Power Query, e.g. in joins, appends, references etc.
-
Calculated columns
-
Calculated tables
-
Conditional formatting
-
Visual calculations
​
What does not work?
-
If you copy whole reports and then only do some minor changes, this can lead to false references.
-
Default titles and subtitles (created by Power BI / default) will not be recognized. If you change the titles in any way they will be detected though.
-
Restrictive sensitivity labels might produce errors.
Measure Killer Compatibility
​
legend
✅ fully compatible
? limited compatibility
✗ currently not working
​​
General:
✅ .pbix (Desktop and Desktop RS)
✅ .pbip
✅ .pbit
✅ Thin files
✅ DirectQuery
✅ Composite models
✅ Paginated reports (paid versions only)
✅ Analyze in Excel (paid versions only)
✅ All reports in the service can now be analyzed (paid versions only)
✅ SSAS and AAS (Tabular only)
​
✗ Thin files only (in mode 1 not possible, in other modes yes) for mode 1 switch to DQ to make it work!
✗ Dashboards
✗ Live connection (SSAS, AAS) - paid versions only
✗ .bim files / models stored in a folder etc.
✗ .pbir (Enhanced Report Layout)
✗ Metrics (Goals)
​
Feature compatibility:
✅ Row-level security
✅ Object-level security (table with OLS is identified)
✅ 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)
? Smart Narrative visual can, in some cases, lead to false results
✗ Q&A visual
✗ Paginated report visual
✗ Metrics (Goals) visual
Measure Killer pricing
All offline features are free to use personally and commercially.
Go to the Download section to get started
The online capabilities of Measure Killer (running in the Power BI Service) like shared models online, Tenant Admin Mode or Tenant Analysis are paid upgrades.
To unlock these modules/features or to get priority support from the Measure Killer team, please purchase a license.
The Basic license is only for PPU organizations and does not include support.
Want to deal with a U.S. entity? Check out our authorized reseller Component Source.
How does Measure Killer work? Watch any video below for a full demo
Measure Killer - Download and Changelog
Current version 2.3.1
The store version requires admin rights. (currently still v2.3.0 in MS Store)
Release Notes for 07/23/2024
Version 2.3.1
​​
[BUG FIXES]
- MK runs twice after ignoring removal of access to workspaces in the Tenant Admin mode
- Empty expression in child model caused an error in the Tenant Admin mode
- Violators are stacking in BP rules after multiple runs
- Page and report level filters with empty dependencies caused an error in the execution
- Timeout exception for large tenants
- What if? analysis sometimes returned a percentage over 100%
- Minor UI bug fixes
​
[MISC]
- Added logs to start window
- Add DAX Duplicates in TA
- Better error handling for XMLA exceptions
​
Older versions
Release Notes for 07/09/2024
Version 2.3.0
​
[FEATURES]
- New mode: Analyze AAS and SSAS models (Preview)
- Best practice rules in all modes (also on a tenant-level)
- Analyze models and reports in all workspaces (Pro, Fabric, Premium, Personal)
- Added storage mode for tables and models (Direct query, import or dual)
- Access tab: track all user and group access across the Power BI tenant
- 1-click optimization for all modes
- Inactive relationships now have usage status (Used/not used)
- Row-level security is now a separate usage
- Object-level security is now tracked
- Tables now have usages (Model, calculated tables, etc.)
- Find out who has the worst model (best practices score) in Tenant Analysis
- Users can now see all table partitions and select which one to remove columns from
[BUG FIXES]
- False negative for %GT implicit measures in visuals
- False negatives for renamed measures in downstream models
- License validation error for users using proxies with HTTPS decrypt enabled
- Manual input not working for some Windows versions in modes 2 and 3
- Fixed custom message in the start window
[MISC]
- Improved DAX expression tables
- Improved "invalid license" error handling
- Dynamic format strings are now tracked
- Restoring measures will now keep their original format string
- Format string added to excel and JSON outputs
- Tables with load disabled added to M expression tables
- Updated all Python packages used in Measure Killer​
​
Release Notes for 05/23/2024
Version 2.2.0
​
[FEATURES]
- Visual Calculations
- Plots are back!
- We can now automatically find Analyze In Excel users by querying activity logs
- New to Tenant Analysis: report views, data sources, Fabric items, datasets average refresh time and refresh schedule
- Better error handling in all modes
- Custom BASE URL for US government cloud (Preview)
- New export options added to Tenant Analysis
- DAX and M expressions tabs in all modes
- Export feature for ‘What if? Analysis’
[BUG FIXES]
- Execution getting stuck due to mobile view issues
- 'Workspace not found' error in Tenant Analysis and Admin modes
- Visual level filter false negative
- DAX expressions not showing for calculated tables in the exports
- Minor UI bug fixes
[MISC]
- Restoring artifacts will now keep their original format string and data type
​​
Release Notes for 04/12/2024
Version 2.1.0
​
[FEATURES]
- Measure killer will now also analyze artifacts only used in the mobile layout
- Added 2 new usage categories: “Used as key column” and “Used as Row Label”
- New Semantic models tab in the main window (see here)
- New type of license: enterprise limited (no "killing" in online modes for normal users)
- Drastically improved speed in tenant analysis
- Minor improvements to Tenant Analysis (Visuals aggregation, Apps can be turned off etc.)
- Custom visuals in Tenant Analysis are split into certified and uncertified
- Generating C# scripts is back in all modes
[BUG FIXES]
- Sudden crashes in modes 3, 4 and Tenant Analysis
- Tenant Analysis top hierarchy “select all” button behavior bug
- Portable Installer will now add a start menu icon
- Multiple 'let' statements caused an error in the generation of the last step in kill columns
​
Release Notes for 02/27/2024
Version 2.0.1
​
[FEATURES]
- Added usage status for field parameters and calculation groups
[BUG FIXES]
- Capacity column in Tenant Analysis empty bug
- Tenant Analysis lineage bug after running Tenant admin mode
- Dark mode tree icons not showing when the app is opened as an external tool
- Backup folder error upon formatting PC
- Execution summary tooltip was considering Report Level Measures, fixed the calculation
- Report level measures breaking upon table deletion with a reference
- Paginated reports duplicated usage for dataset fields
- Added better error handling for dataset selection in mode 1 and 2
- Wrong classification for personal workspaces built for the one drive and share point lists
- "Manage Backups" button leads to the wrong directory
- Desktop shortcut not being created for the admin installer
- Error opening measurekiller for some users with older versions
[MISC]
- Edit instructions in Tenant Analysis
​
Release Notes for 02/13/2024
Version 2.0.0
​
[FEATURES]
-Completely new UI
-New mode "Tenant Analysis"
-Finding all unused artifacts in one run
-Ability to run multiple semantic models at once
-Analysis 5-10x faster
-Added downstream semantic models (composite/child models) and personal workspaces
-Removing and restoring artifacts via XMLA to models online
-Added "What if analysis"
-Added full .json export and new excel report
-Huge improvements to logic and usability
-Added logs/traces to debug and to increase transparency
[BUG FIXES]
-Massive reduction of bugs, too many to list here
​
Release Notes for 10/10/2023
Version 1.2.1
​
[BUG FIXES]
-Fixed connection error in offline modes
​
Release Notes for 10/05/2023
Version 1.2.0
​
[FEATURES]
-Removing measures and calculated columns in the online mode is now possible
-Added 'Used in' option to search artifacts
-Added clear search button on all text search fields
-Minor UI improvements
​
[BUG FIXES]
-Visual filters with aggregations false negative is fixed
-Power Query references bug fixed
-Fixed report size bugs when all artifacts were used or unused
-Changed authentication workflow to avoid MK getting stuck if authentication failed
-MK now asks to run again after artifacts have been restored
-Fixed a bug where MK would crash if the backup folder didn't exist
​
Release Notes for 08/14/2023
Version 1.1.0
​
[FEATURES]
-All Power BI and Paginated reports in the Service can now be analyzed
-New dark mode theme
-Release notes displayed in MK
-Users can now copy the rows, details, and the entire table directly from the main window.
-Analytics section with expanded artifact hierarchy in calculations.
​
[BUG FIXES]
-Small fixes in shared dataset on local machine mode
-Empty layout issue for older reports
-Minor UI bug fixes
Release Notes for 07/19/2023
Version 1.0.0
​
[FEATURES]
Admin Mode: For tenant admins, Measure Killer can now search your entire tenant for reports connected to a respective datasets. It temporarily grants you permission and then removes them again.
Excel File Analysis: Measure Killer now extends its analysis capabilities to Excel files linked to your dataset (you need to add them manually in all modes)
Paginated Reports: These reports can be analyzed just like Power BI reports now.
Measure Killer Analytics: An advanced analytics approach, providing unique information about your reports and datasets.
-Putting a cost on measures (in terms of storage they consume via columns they reference)
-Showing total storage used by an individual report, page in a report or visual.
-Giving you the distinct size of an artifact consumed (meaning this is what you can save if you removed it)
Other features:
-Advanced Console: A robust command set for printing and displaying metadata, results, and more has been added.
-Automated Removal of Calculated Columns: Measure Killer can now automatically detect and remove calculated columns.
-Hiding Unused Columns: Functionality to hide unused columns has been added to Measure Killer.
-Support for .pbip and .pbit file formats (Preview feature): Measure Killer can now read the new .pbip file extension as well as template extensions.
-Bulk Restoration of Deleted Measures: Users can now restore multiple previously deleted measures simultaneously from Measure Killer backups.
-Improved Shared Dataset on Local Machine Mode: We've made this mode more user-friendly.
-Drag and Drop feature: You can now use drag and drop for adding themes, analyzing in Excel, and other file extensions.
-Usage Count in Results: To enhance result visualization, we've included a 'number of uses' metric in the output.
[Bug Fixes]
-Shared Dataset on Local Machine Mode: Fixed the issue of window minimizing when selecting the port. Now, the window stays open.
-Duplicate Entries: Fixed the issue of duplicate entries in row by row result documents.
-Theme Selection Bug: Fixed a bug where, in some instances, the theme selection wouldn't change as expected.
​
Release Notes for 05/19/2023
Version 0.9.10
​
[BUG FIXES]
-Fixed an issue that prevented all reports from being removed from the report list.
-Implemented a "Stop" button to end the process running in a separate thread, preventing it from continuing if the window is closed -after "Run".
-Improved error handling for instances where ".pbix" file paths were incorrect (moved or deleted), which caused a "Could not retrieve filters data" bug.
-Resolved a bug with page-level filters.
-Stopped automatic report downloads after closing Measure Killer in online mode.
-Fixed an issue causing the page for page-level filters in the main window to be blank.
-Corrected a false negative issue with the TopN Filter of visuals.
-Improved workspace sorting (first dropdown in the process/UI) for accuracy.
-Corrected a false negative when referencing tables with specials characters in thin/live reports.
-Enforced a requirement for at least one valid report to run Measure Killer in online mode.
​​
[FEATURES]
-Auto-check for new versions of Measure Killer.
-Tooltips for buttons, providing explanations for their functionalities.
-Reverse sorting (Z-A) for lists and dropdowns in the online mode.
-Removed "Show Results" button for a streamlined experience.
-Implemented a progress label, providing real-time count of artifacts analyzed.
-Enhanced excel export by including visual title and subtitle for visuals.
-Included multiple notebooks in the main window: Information, Execution, and Killing logs for better organization and tracking.
-Added auto-copying of C# script for deleting measures to the clipboard.
-Displayed the dataset name in the main window for online mode.
​
Release Notes for 04/24/2023
Version 0.9.9
​
[BUG FIXES]
Resolved "Measure" key issue in live/thin reports with broken measures.
[FEATURES]
-Enhanced Shared Datasets Online Mode UI (Basic/Enterprise).
-Use [DEL] & [ENTER] to include/exclude reports in Shared Dataset Online Mode.
-Workspace search & sort options added.
-Report names now included in layout errors.
-More sorting options in online mode.
​
Release Notes for 04/07/2023
Version 0.9.8
​
[BUG FIXES]
-Resolved an issue where measures or columns in the rule option for conditional formatting were not being detected.
-Fixed the "Delete selected" button bug in the "Edit reports" section for live connections on local machines.
-Addressed the Group ("Single visual") bug when grouping visuals.
-Prevented the Settings window from opening twice.
-Removed the "MK_" prefix from the beginning of the saved results Excel file name.
-Corrected a bug where some columns were omitted from the report.
​
[FEATURES]
-Added the ability to backup and restore measures deleted by Measure Killer.
-Implemented a new and more secure authentication (license) method.
-Introduced an "Expand All" option in the main window.
​
Release Notes for 03/20/2023
Version 0.9.7
[Features]
-Added the ability to configure proxy options for API calls and Azure identity verifier.
​
[UI]
-Online mode now takes users back to the Workspace and Dataset window, rather than resetting the Measure Killer tool to its initial state.
-Dataset and Workspace selection window is now resizable, giving users more control over the size and layout of the window.
​
Release Notes for 03/15/2023
Version 0.9.6
​
[Bugs]
-Improved error handling
-Smart narrative visual fixed
​
Release Notes for 03/08/2023
Version 0.9.5
​
[Features]
-Added Shared/golden Dataset online mode.
Users can now select a dataset and Measure Killer will detect all connected reports in workspaces that the user has access to. For this mode, no local files are needed anymore.
-Enhanced detection of artifacts in visuals.
-Significantly reduced number of false positives
-Strongly improved Power Query M logic
​
[UI]
-The user interface has been improved with rearranged buttons, reduced windows, and a menu bar has been added.
-Users can choose to either "Remove other columns" or "Remove columns" to "kill" columns.
-Added a menu for Measure Killer's main window (less buttons).
-Users now have the option to choose one of 11 color themes for the entire Measure Killer application.
[Bugs]
-False positives for substrings in visuals have been fixed.
-Fixed duplicates in where artifact are used.
-The main window no longer becomes "not responding" in bigger reports.
-Fixed multiple steps with the same name, "Columns removed by Measurekiller"
-Fixed calendar artifacts usage bug.
​
Release Notes for 01/05/2023
Version 0.9.2
​
[MISC]
-Fixed a bug with "filter on this page" and "filter on all pages"
​
​Release Notes for 12/07/2022
Version 0.9.1
[MISC]
- Updated the installer
- Fixed offline bug where Measure Killer was not loading
​
​Release Notes for 12/05/2022
Version 0.9
[ FEATURES ]
- Added connection to shared datasets and live/thin reports (offline and via XMLA endpoint for premium workspaces)
- Improved results table
[UI]
- rearranged buttons and added some functional buttons e.g "back button"
- changed formatting of results table
​
Release Notes for 10/17/2022
Version 0.8
[ FEATURES ]
- Added option to kill measures directly in Measure Killer without using Tabular Editor
- Added feature to sort columns
- Added detection of columns used only by incremental refresh
- Added (DAX) expression column for Excel output
- Added new report option (row by row) when saving the results file
- Self-update after killing measures (the user doesn’t have to click on run again)
[MISC]
- Added error handling for blank file selection
- var. smaller bug fixes
​
Release Notes for 10/06/2022
Version 0.7
[UI]
-You can now see how costly (in terms of storage space) your unused columns are
-Table overview of unused artifacts
[MISC]
- var. bugfixes and performance improvements
​
Release Notes for 9/16/2022
Version 0.5
[UI]
- Rearranged Buttons.
[MISC]
- Fixed an error that caused false positives if measure names would contain " and '.
​
Release Notes for 9/7/2022
Version 0.4
[ FEATURES ]
- Added M code to automatically remove columns.
[UI]
- Improved UI and added colored buttons.
Release Notes for 8/27/2022
Version 0.3
[ FEATURES ]
- Added C# script to remove measures.
- Added option to plot results.
[ MISC ]
- Removed info page on startup.
Measure Killer Security Information and Documentation
Version 2.3.0
​​
This document outlines the security details and data handling practices of Measure Killer.
​
Data Handling and Privacy Assurance
​
Measure Killer is meticulously designed with user privacy and data security as paramount concerns. It is important for users to understand the scope and way that Measure Killer interacts with Power BI.
​
Metadata-Only Interaction
​
Measure Killer only interacts and utilizes metadata from Power BI Desktop or the Power BI Service. At no point does Measure Killer read, store, or process actual data contained within Power BI reports or models. This strict limitation to metadata ensures that sensitive data remains confidential and secure.
​
What is considered Metadata?
​
Metadata is considered the following (examples):
• Names or artifacts (report, semantic models, workspaces, users/email addresses)
• DAX and M expressions including comments
• Names of measures, tables, calculated columns, calculated tables, calculation groups, field parameters etc.
• Uncompressed size of columns
• All definitions (e.g. name of reports, pages, visuals, visual titles, visual size and other metadata)
​
Local Processing of Metadata
​
All processing and analysis of metadata conducted by Measure Killer is performed locally on the user's machine through the installed client software. This approach ensures that the operations on metadata do not involve or require any external processing or storage facilities. By doing so, Measure Killer upholds a high standard of data protection and minimizes potential security risks. There is no database that is hosted, managed, or used to process any kind of information, everything is done on the user’s machine and not transmitted anywhere besides when using XMLA or REST API calls with Microsoft directly.
​
XMLA Endpoint Connection
​
To retrieve metadata from semantic models in the Power BI Service, XMLA endpoints are used. The authentication happens via the entered Microsoft account (see adomd client for more specifics on this).
​
API Calls to Microsoft for Metadata Acquisition
​
The only other external interaction Measure Killer undertakes involves REST API calls to Microsoft’s Power BI Service for the acquisition of metadata. These API calls are made in compliance with all relevant security protocols. Authentication happens via Azure Identity package for python, using the Default Azure Credential (https://learn.microsoft.com/en-us/dotnet/api/azure.identity.defaultazurecredential) or, as a fallback, the Interactive Browser Credential (https://learn.microsoft.com/en-us/dotnet/api/azure.identity.interactivebrowsercredential). Once metadata has been acquired, all subsequent analyses and operations are carried out locally. See the list at the bottom of this document for a list of REST API calls done.
​
Online / Offline Modes
​
Measure Killer is designed to be able to operate both online and offline:
• In the offline modes, Measure Killer connects to the local instance of Analysis Services to retrieve the metadata it needs (Modes 1 and 2). In these modes the only time there is an interaction with the internet is upon launch to verify valid licensing (see License Verification below for details)
• Online modes (Modes 3, 4 and 5) are triggered when an active internet connection is detected and when the user has a valid license. In these modes there are external connections happening (only REST API calls and XMLA connections to Microsoft as outlined above).
​
License Verification and Datetime Check
​
• Measure Killer uses API calls to acquire the current date and time: GET https://worldtimeapi.org/api/timezone/Europe/London or, as a fallback, GET https://timeapi.io/api/Time/current/zone?timeZone=Europe/London to ensure the license has not expired.
​
Version Check and User Notification
​
• To inform users about available updates, Measure Killer queries GET https://measurekiller.com/downloads/ to compare the installed version against the most recent version available the website.
• There is one additional GET request to extract text and write it in the main UI window from this URL GET https://en.brunner.bi/post/measure-killer-feedback-1
API Endpoints and Security Measures
• Secure requests (HTTPS) are made to Power BI API endpoints, ensuring data in transit is encrypted.
• Access tokens are securely passed in request headers, with responses parsed as JSON for internal processing.
List of REST API Calls
• GET https://api.powerbi.com/v1.0/myorg/groups/{id}/datasets
• GET https://api.powerbi.com/v1.0/myorg/groups/{id}/reports
• GET https://api.powerbi.com/v1.0/myorg/groups/{id}/users
• GET https://api.powerbi.com/v1.0/myorg/groups/{workspace.id}/reports/{report.id}/datasources
• GET https://api.powerbi.com/v1.0/myorg/groups/{workspace.id}/reports/{report.id}/Export
• GET https://api.powerbi.com/v1.0/myorg/groups
• GET https://api.powerbi.com/v1.0/myorg/admin/groups
• GET https://api.powerbi.com/v1.0/myorg/admin/capacities
• GET https://api.powerbi.com/v1.0/myorg/admin/workspaces/scanStatus/
• POST https://api.powerbi.com/v1.0/myorg/admin/workspaces/getInfo?lineage=true
• POST https://api.powerbi.com/v1.0/myorg/admin/groups/{workspace.id}/users
• DELETE https://api.powerbi.com/v1.0/myorg/admin/groups/{workspace.id}/users/{user.email}
• GET https://api.powerbi.com/v1.0/myorg/https://api.powerbi.com/v1.0/myorg/admin/users/{user.email}/artifactAccess?artifactTypes=”Workspaces”