
Measure Killer
ein externes Tool für Microsoft Power BI Desktop.
Aufräumen des Power BI Tenants
Measure Killer kann einen Power BI Tenant aufräumen und optimieren. Dies kann die Refreshdauer der Datasets reduzieren und so zu weniger Last auf der Premium Kapazität führen.
Measure Killer liest nur die Metadaten eines Dataset, nie die eigentlichen Daten. Da wir uns über XMLA verbinden, muss das Dataset nicht downgeloadet werden.
Löschen unbenutzter Measures
Measure Killer kann selbständig unbenutzte Measures löschen. Alternativ kann ein C# Skript generiert werden, mit dem man die Measures in Tabular Editor manuell entfernen kann.
Weniger Spalten in Modell verbessern auch die Performance weil weniger RAM benötigt wird.
Löschen unbenutzter Spalten
Measure Killer generiert einen voll funktionsfähigen M-Code, der dann in den "Erweiterten Editor" der bereits bestehenden Query eingefügt werden kann.
Analyse eines Berichts
Für jeden Bericht wird ein detailliertes Excel File erstellt, hier kann man einsehen, wo ein Artefakt verwendet wird. Dies kann in: Berechnungen, Visuals, Filter, Conditional Formatting, Joins in Power Query oder anderen Teilen eines Power BI Berichts wie z.B. Relationships sein.
Außerdem, gibt Measure Killer auf Wunsch auch eine Analyse in Form eines Charts aus.



Was wird vom Measure Killer erkannt?
-
Visuals - inklusive Filter welche auf das Visual, die Seite oder den Bericht angewendet werden
-
Artefakte die nur in Custom Visuals benutzt werden (siehe compatibility matrix weiter unten)
-
Jegliche Art von Measures oder Beziehungen
-
Spalten die ausschließlich in Power Query z.B. joins, appends, references genutzt werden
-
Calculated columns
-
Calculated tables
-
Conditional Formatting (bedingte Formatierungen)
Was geht nicht?
-
Wenn man ganze Berichte kopiert und dann nur diverse Änderungen macht, kann dies zu falschen Referenzen führen.
-
Wenn man in Power Query neue Queries erstellt die auf bereits existierende Queries referenzieren, kann es sein, dass Measure Killer Spalten in der neuen Query referenziert, die in den alten Queries bereits entfernt wurden.
-
Wenn eine Query B (child) auf Query A (parent) referenziert (join, append, reference) und diese dieselben Spaltennamen haben, und wir nun einen Eintrag in M mit einer dieser Spalten haben, wird dies fälschlicherweise als benutzt in Query A geflagged.
-
DAX Ausdrücke die nur auf Tabellen verweisen und keinerlei Referenzen auf Measures oder Spalten haben, werden nicht beachtet. (zB COUNTROWS)
-
Kein Löschen von Calculated Columns
-
Es können mehrere Durchläufe notwendig sein, um alle unbenutzten Measures und Spalten zu löschen. (Das können zB welche sein, die lediglich in unbenutzten Measures und Spalten referenziert werden, aber nicht im Report selbst verwendet werden.)
-
Standardtitel und -untertitel (von Power BI vorgeschlagen/erstellt) werden nicht erkannt. Sobald der User diesen Titel abändert wird er erkannt.
Measure Killer Compatibility
legend
✅ fully compatible
? limited compatibility
✗ currently not working
General:
✅ .pbix (Desktop and Desktop RS)
✅ .pbix (Uploaded to PBI Service)
✅ Thin file uploaded to PBI Service
✅ DirectQuery
✅ Composite models
✗ Thin files (.pbix live connection) that cannot be download using the Power BI Service - link
✗ Dashboards
✗ Paginated reports (we are currently working on adding this)
✗ Analyze in Excel
✗ Any type of live connection (SSAS, AAS, Datamarts) - create a local mode (DQ) to make it work!
✗ .bim files / models stored in a folder etc.
✗ Metrics (Goals)
Feature compatibility:
✅ Row-level security
✅ Calculation groups
✅ Field parameters
✗ KPIs (created in the tabular model)
✗ Object-level security (When an artifact is only used in OLS, Measure Killer will not detect it)
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
Most features of this tool are free to use personally and commercially.
The analysis of shared/golden datasets in the Power BI Service (third module in the client application - greyed out if you have not entered a valid license key) is a paid upgrade however.
The only difference to the free version is that your datasets and thin reports can remain in the Power BI service and Measure Killer will find and analyze them automatically.
To unlock this feature, please purchase a license below.
If you have any questions regarding licensing, please reach out to us via "contact" at the top right of this website.
Wichtiges und Versionierung
Es gibt eine Version die Adminrechte benötigt, dann wird der Measure Killer auch zu den externen Tools von Power BI hinzugefügt. Bei der "portable" Version, die keine Adminrechte benötigt, wird dies nicht gemacht.
Da Measure Killer noch sehr neu ist, sind Bugs nicht ausgeschlossen. Hier kann man Fehler melden.
Enterprise Kunden können Support Anfragen direkt an uns stellen.
Measure Killer erstellt für jeden analysierten Report einen versteckten "temp_" Ordner im selben Verzeichnis wie das Power BI File. Dieser Ordner ist nichts anderes als das entpackte .pbix File des Reports.
Das copy+pasten von Visuals zwischen live/thin Reports kann dazu führen, dass Artefakte fälschlicherweise als benutzt identifiziert werden, obwohl sie das evt. nicht sind.
Measure Killer - Download & Changelog
Aktuelle Version 0.9.10
Auch im Microsoft Store verfügbar (Admin Version)
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.
Older versions
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.
Security information and documentation
This section will shed some light on the API calls Measure Killer makes.
Measure Killer can also run completely offline though.
Power BI REST APIs
This Python code uses the Power BI REST APIs to interact with Power BI data. The code provides several methods for accessing information, including accessible workspaces, datasets in a particular workspace, reports in a particular workspace, and the layout of a particular report.
API calls made
-
authenticate(): Uses the Azure identity package to authenticate with the Power BI API and retrieve an access token.
-
workspaces(): Gets all accessible workspaces using a GET request to https://api.powerbi.com/v1.0/myorg/groups.
-
datasets(wk_id:str): Gets all datasets in a particular workspace using a GET request to https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/datasets.
-
reports(wk_id:str): Returns all reports in a particular workspace using a GET request to https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/reports.
-
report_layout(wk_id:str,re_id:str): Extracts the report layout in JSON format using a GET request to https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/reports/{re_id}/Export.
The API calls are made using the requests package in Python, which sends HTTP requests to the Power BI API. The requests.get() method is used to make GET requests to the API endpoints. The access token is passed in the headers of the request, and the response is returned as a JSON object.
URLs used
-
Authentication: https://analysis.windows.net/powerbi/api/.default
-
Get all accessible workspaces: https://api.powerbi.com/v1.0/myorg/groups
-
Get datasets in a particular workspace: https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/datasets
-
Get reports in a particular workspace: https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/reports
-
Extract the report layout in JSON format: https://api.powerbi.com/v1.0/myorg/groups/{wk_id}/reports/{re_id}/Export
Note: {wk_id} and {re_id} are placeholders for the workspace ID and report ID, respectively.
Dokumentation
Installation
Es gibt zwei verschiedene Versionen. Eine "Admin" Version und eine "Non-Admin" Version (portable). Um die Admin Version installieren zu können, muss der User im Windows Administrator Rechte besitzen. Die beiden Versionen funktionieren jedoch gleich. Der einzige Nachteil der "Non-Admin" Version ist, dass Measure Killer nicht automatisch zu den "External Tools" in Power BI Desktop hinzugefügt wird.
Um die XMLA Verbindung für das Basic und Enterprise Abo zu ermöglichen wird das MSOLAP Paket benötigt. Dies muss evt. von Microsoft heruntergeladen und installiert werden.
Verwendete Python libraries
sys, pyadomd, pandas, numpy, tkinter, os, json, shutil, re, subprocess, psutil, pyperclip, webbrowser, matplotlib
Anleitung
Measure Killer kann ganz einfach über die "External Tools" in Power BI geöffnet werden.
Falls die "portable" Version verwendet wird, muss das Tool über die .exe Datei ausgeführt werden, oder manuell zu den "External Tools" hinzugefügt werden. Der Port wird automatisch vom geöffneten .pbix-file ermittlelt. Außerdem wird als Dateipfad die zuletzt geöffnete .pbix Datei vorselektiert.
Ausführen von Measure Killer
-
Beim Start von Measure Killer gibt es drei Auswahlmöglichkeiten:
-
Start
-
Single report and dataset: Das ist die grundlegendste Art Measure Killer zu verwenden. Hier kann pro Durchlauf nur ein Bericht/Dataset analysiert werden.
-
Shared Dataset on local machine: Hierfür muss das Dataset heruntergeladen werden.
-
Shared dataset via XMLA: Bei dieser Option muss das Dataset nicht heruntergeladen werden. Aber PPU oder PPC sowie XMLA Leserechte im Tenant werden vorausgesetzt.
-
-
Single report and dataset
-
Analyse eines einzelnen Berichts
Hier kommt man zur Hauptseite von Measure Killer. Oben links im Dropwdown-Feld wir der PBI Bericht ausgewählt (sofern nicht schon die richtige Datei vorselektiert wurde). Measure Killer wählt automatisch die zuletzt geöffnete PBI Datei aus.
Ist der richtige Bericht ausgewählt, kann der Execute Button betätigt werden. Dieser führt den User noch einmal zu einer Dateiauswahl. Ist das richtige File gewählt - klicken Sie Run.
Dann analysiert Measure Killer die PBI Datei und man kann im Popup-Fenster sehen welche Elemente überprüft werden.
In der Tabelle werden die Ergebnisse der Analyse angezeigt - die benutzten/unbenutzten Measures und Spalten des Berichts.
Außerdem können diese Ergebnisse genauer angezeigt werden mittels Document results.
Die Funktionsweise der jeweiligen Buttons wird weiter unten in dieser Doku näher erklärt.
Shared dataset on local machine
-
Analyse von mehreren live/thin reports, die mit einem Dataset verbunden sind.
Zuerst muss das Dataset heruntergeladen und geöffnet werden. Dann kann man im Drop-Down Menü den dazugehörigen Port selektieren. Im nächsten Schritt muss zuerst noch einmal das Dataset ausgewählt werden, am besten über "Add new file". Jetzt können wir die dazugehörigen Berichte selektieren. Entweder einzeln mit "Add new file" oder auch ein ganzer Ordner voller .pbix Dateien mit "Live/thin reports from a folder". Wenn alle Dateien ausgewählt wurden, klicken Sie Submit.
Danach gelangen sie zum Hauptfenster von Measure Killer. Klicken Sie auf Execute um ihre Berichte zu analysieren.
Dann analysiert Measure Killer die Dateien und man kann im Popup-Fenster sehen welche Elemente überprüft werden.
In der Tabelle werden die Ergebnisse der Analyse angezeigt - die benutzten/unbenutzten Measures und Spalten des Datasets bzw. der live Berichte. Bei den shared Datasets macht es auch Sinn immer zu sehen in welchem Report ein Artefakt benutzt wird.
Um eine volle Dokumentation mit allen Details zu bekommen, klicken Sie auf Document results.
Die Funktionsweise der jeweiligen Buttons wird unten in "Verschiedene Buttons" näher erklärt.
Shared dataset via XMLA
-
Analyse von mehreren live/thin reports welche mit einem Dataset verbunden sind (mittels XMLA Endpoint). Diese Option ist hilfreich wenn das Dataset zB nicht heruntergeladen werden kann.
Vorraussetzungen:
-
Basic oder Enterprise Version von Measure Killer
-
Premium Workspace
-
XMLA Endpoint aktiviert mindestens mit Leserechten
-
XMLA Endpoint im Power BI Admin Portal zugelassen
-
MSOLAP Paket installiert
Geben Sie den Namen des Workspace ein, in dem sich das Dataset befindet. Der Name muss genau übereinstimmen (case sensitive). Wählen Sie dann darunter im Drop-Down Menü das richtige Dataset aus und klicken Sie Next.
Im nächsten Schritt können die dazugehörigen Berichte ausgewählt werden. Entweder einzeln mit "Add new file" oder auch ein ganzer Ordner voller .pbix Dateien mit "Live/thin reports from a folder". Wenn alle Dateien ausgewählt wurden, klicken Sie Submit.
Danach gelangen sie zum Hauptfenster von Measure Killer. Klicken Sie auf Execute um ihre Berichte zu analysieren.
Dann analysiert Measure Killer die Dateien und man kann im Popup-Fenster sehen welche Elemente überprüft werden.
In der Tabelle werden die Ergebnisse der Analyse angezeigt - die benutzten/unbenutzten Measures und Spalten des Datasets bzw. der live Berichte. Bei den shared Datasets macht es auch Sinn immer zu sehen in welchem Report ein Artefakt benutzt wird.
Um eine volle Dokumentation mit allen Details zu bekommen, klicken Sie auf Document results.
Die Funktionsweise der jeweiligen Buttons wird unten in "Verschiedene Buttons" näher erklärt.
Verschiedene Buttons
-
Back (Icon oben links): Führt den Benutzer zur vorherigen Seite.
-
Refresh (Icon oben links): Aktualisiert Measure Killer und holt sich den Port aus dem aktuell geöffneten Bericht.
-
Copy: kopiert den Text aus dem Textfeld auf der linken Seite.
-
No Idea what to do?: Weiterleitung zu unserem YouTube Kanal.
-
Execute: Analysiert den Bericht und gibt als Ergebnis die unbenutzten Spalten und Measures zurück.
-
Feedback: Hiermit wird der Benutzer zu unseren Feedback Blog Post weitergeleitet.
-
Plot unused vs. used: Stellt die Ergebnisse grafisch dar.
-
Document Results: Generiert eine detaillierte Dokumentation als xls/txt oder csv Datei.
-
Kill unused measures: Hiermit können entweder ausgewählte oder alle unbenutzten Measures gelöscht werden (weitere Infos zum Ablauf finden Sie unter Features).
-
Kill unused Columns: Öffnet ein eigenes Fenster, wo man alle Tabellen, in denen es unbenutzte Spalten gibt, auswählen kann. Die Tabellen sind nach der Gesamtsumme an Speicherplatz geordnet, die eingespart werden kann, wenn die unbenutzten Spalten gelöscht werden. Es wird für jede Tabelle ein M code generiert. Dieser Code muss dann in den Advanced Editor der jeweiligen Query/Tabelle kopiert werden.
-
Reset Table: Setzt die Tabelle in die Standardansicht zurück.
-
Filter mit Dropdownmenu: Hier kann in Verbindung mit dem Textfeld nach Artefakten nach Name/Table oder Report gefiltert werden.
-
GO: aktiviert den Filter vom Textfeld links.
-
Measure Killer's official website: Weiterleitung zur Measure Killer Website.
-
Delete table content: Löscht den Inhalt der Tabelle.
Features
-
Löschen von unbenutzten Measures: Measure Killer scannt den Bericht und teilt Measures in benutzt oder unbenutzt ein. Das Löschen von Measures sollte immer mit Vorsicht gemacht werden, da dieser Schritt unumkehrlich ist. Measure Killer kann entweder ausgewählte oder alle Measures selbst löschen, oder ein C# Skript zum Löschen im Tabular Editor erstellen.
-
Löschen von unbenutzten Spalten: Measure Killer scannt den Bericht und teilt Spalten benutzt oder unbenutzt ein. Mithilfe eines M codes (Power Query Script) können mehrere Spalten pro Tabelle gelöscht werden. Jedoch muss dieses Script für jede Tabelle einzeln ausgeführt werden.
-
Analyse des Berichts in Excel: Für jeden Output von Measure Killer wird ein detailliertes Excel File erstellt, hier kann man einsehen, wo ein Artefakt verwendet wird. Dies kann in: Berechnungen, Visuals, Filter, Conditional Formatting, Joins in Power Query oder anderen Teilen eines Power BI Berichts wie z.B. Relationships oder calculation groups sein. Außerdem, gibt Measure Killer auf Wunsch auch einen Chart aus, bei der man die Anzahl der unbenutzten Spalten und Measures sieht, dies geht über den Button Plot unused vs. used im UI.
-
Analyse des Berichts im Chart: Außerdem gibt es auch eine grafische Analyse in Form eines Charts. Hier werden die benutzten und unbenutzten Measures und Spalten in Form eines Balkendiagramms dargestellt. Diese Funktion kann über den Button "Plot Results" aufgerufen werden.
-
Measure Killer 0.9 macht es möglich Datasets und live/thin Reports zu analysieren.
-
Shared datasets und live reports:
-
Online: Bei dieser Option muss das Dataset nicht heruntergeladen werden. Aber PPU oder PPC und XMLA Leserechte werden benötigt.
-
Offline: Hierfür muss das Dataset heruntergeladen werden.
-
-
Single report and dataset: Das ist die einfachste Art Measure Killer zu verwenden. Hier kann pro Durchlauf nur ein Bericht/Dataset analysiert werden.
-
Tabular Killer wird ausgeführt wenn man die Measures direkt in Measure Killer löscht. Hier wird ein C# Script in einem CMD Pop-up Fenster ausgeführt.