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.

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.

Analyse_Icon_edited_edited.png
Columns_Icon_edited_edited.png
Measures_Icon_edited_edited.png

Was wird vom Measure Killer erkannt?

  • Visuals - inklusive Filter welche auf das Visual, die Seite oder den Bericht angewendet werden

  • Jegliche Art von Measures oder Beziehungen

  • Spalten die ausschließlich in Power Query z.B. joins genutzt werden

  • Calculated columns

  • Calculated tables

  • Conditional Formatting (bedingte Formatierungen)

  • Unbenutzte Spalten von Kalendertabellen werden nicht zur Löschung vorgeschlagen (dies funktioniert jedoch nur, wenn die Kalendertabelle auch als solche in Power BI markiert wurde)

Was geht nicht?

  • Kein Löschen von Calculated Columns

  • Spalten die "title" heißen werden als benutzt geflaggt, sobald eine Spalte in der jeweiligen Tabelle irgendwo im Bericht verwendet wird (wir arbeiten daran, diesen Bug zu fixen)

  • Aufgrund von "2nd class measures" können mehrere Durchläufe notwendig sein, um alle Measures zu löschen. (Das sind Measures, die lediglich in anderen Measures referenziert werden, aber selbst nicht zB in einem Visual verwendet werden.)

  • LocalDateTables werden automatisch als benutzt markiert.

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.​

Anleitung zur Verwendung von "Measure Killer"

Blog post oder YouTube video

Measure Killer - Download & Changelog

Aktuelle Version 0.9

Nun auch im Microsoft Store verfügbar (Admin Version)

​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

Previous versions

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.

​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 Enterprise Abo zu ermöglichen wird das MSOLAP Paket zusätzlich mitinstalliert (man wird während der Installation dazu aufmerksam gemacht)

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 Bericht​s

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.