Performance und Usability optimieren in Power BI

Der Erfolg eines Unternehmens hängt von den getroffenen Entscheidungen ab. Bestenfalls werden Entscheidungen jedoch nicht „aus dem Bauch heraus“ getroffen, sondern vielmehr auf Grundlage von Daten. Bei der Bereitstellung von Daten ist die Modellierung ein zentraler Aspekt. Es gilt Performance und Usability von Reports und Dashboards zu optimieren.

Man sollte sich nicht nur die Zeit nehmen, Daten richtig aufzubereiten, sondern sie auch nutzerfreundlich bereitzustellen: Was nützen die besten Daten, wenn sie letztlich keiner nutzt?

Erfolgreiche Entscheidungen basieren auf qualitativ-hochwertigen Daten – doch was, wenn sie keiner nutzt?

In diesem Beitrag wollen wir Dir 5 Tipps geben, wie Du die Performance sowie die User Experience in Microsoft Power BI verbessern kannst. Generell gilt: Schnelle Ladezeiten, aktuelle Daten und ein einfacher Zugriff erhöhen die Usability eines Power BI Reports. (Wie du die Performance in Google Big Query verbessern kannst, liest du hier.)


1. Unnötige Daten entfernen

Auch wenn in Zeiten von „Big Data“ die Menge an Daten riesengroß ist, so gehört eine gewisse Datensparsamkeit hinsichtlich der Performance doch „zum guten Ton“. Prinzipiell sollten wir nur die Daten einlesen, die wir später auch benötigen. Das gilt gleichermaßen für Spalten und Zeilen im Datensatz.

Anstatt die Spalten im Power Query Editor per „Spalten entfernen“ zu löschen, solltest du „Spalten auswählen“ verwenden. Benötigen wir später eine entfernte Spalte, können wir diese im gleichen Schritt hinzufügen. Wir müssen dadurch also keine Arbeitsschritte löschen oder neu generieren.

Stellen wir uns vor, wir hätten eine Tabelle mit Meta-Daten, etwa Länderkennzahlen wie Population oder Internetnutzer sowie Informationen zu Kontinent und Subkontinent pro Land. Falls die Population im Reporting irrelevant ist, sollten wir beim Importieren der Daten auf diese Spalte verzichten.

Spalten auswählen, statt Spalten entfernen nutzen
„Spalten auswählen“, statt „Spalten entfernen“ nutzen

In diesem Beispiel ist die Tabelle klein und die eingesparte Datenmenge überschaubar. Anders sähe dies bei einer Tabelle aus, die aus vielen Millionen Zeilen besteht, wie etwa einer Tabelle mit Web-Tracking-Daten. Durch das Entfernen einzelner irrelevanter Felder können wir die Datenmenge erheblich reduzieren und dadurch die Aktualisierung des Datensatzes beschleunigen.

2. Star Schema erhöht Performance und Usability

In vielen Data Warehouses liegen Daten normalisiert vor, typischerweise in der dritten Normalform (3NF). Ein Vorteil liegt auf der Hand: Wir müssen die Daten nur an einer Stelle ändern. Ein Nachteil ist gleichsam, dass die Tabellen durch JOINs verbunden werden müssen. Im Reporting bzw. aus Sicht der Anwendung ist diese Form der Normalisierung ebenfalls nachteilig, weil die Komplexität höher ist als nötig.

Stellen wir uns hierzu vor, wir hätten zwei Tabellen mit Produktdaten, etwa Produktkategorien und -subkategorien. Im „Back-End“, d.h. im Data Warehouse ergibt diese Trennung durchaus Sinn, aber aus Sicht der Anwendung – im „Front-End“ – nur wenig. Zur Vereinfachung der Anwendung ließen sich diese Tabellen also verbinden, sodass letztlich nur eine Dimensionstabelle übrig bliebe.

Wir empfehlen das Datenmodell soweit zu reduzieren, dass daraus ein einfaches Star Schema resultiert. Auf Snowflaking solltest Du so weit wie möglich verzichten.

Die Zusammenführung der Tabellen bringt den Vorteil mit sich, dass wir Hierarchien bilden können. Mit einer ausschließlich relationalen Verbindung wäre dies nicht möglich. Außerdem muss nur eine Tabelle bei der Berechnung durchlaufen werden und nicht zwei, d.h. längere „Filterstrecken“, die sich negativ in der Performance bemerkbar machen würden, können so vermieden werden.

3. Zeitintelligenz deaktivieren

Zeitintelligenz pro Datei oder Global deaktivieren
Zeitintelligenz pro Datei oder Global deaktivieren

Datumstabellen sind prinzipiell sehr hilfreich. Mit ihrer Hilfe können wir das Feature „Zeit-intelligente Berechnungen“ nutzen und Monatsvergleiche oder andere Berechnungen durchführen (z.b. mithilfe von DATESYTD). In den globalen Optionen von Power BI (Menüpunkt „Daten laden“) gibt es die Option die automatische Generierung von Datum sowie Uhrzeiten zu deaktivieren.

Deaktiviere in in den globalen Optionen die Funktion „Zeitintelligenz“ und generiere stattdessen eine eigene Datumstabelle.

Wieso sollte man sie deaktivieren, wenn die Funktion hilfreich ist? Power BI erstellt diese Tabellen im Hintergrund. Sie sind also nicht sichtbar, erhöhen jedoch den Speicherbedarf. Wenn wir nun 10 Tabellen laden, die Zeitwerte enthalten, generieren wir damit auch 10 Datumstabellen. Das ist unnötig. Stattdessen sollten wir stets eine Datumstabelle generieren, die wir später für unsere Zeit- bzw. Datumsfilter nutzen.

4. Daten außerhalb von Power BI transformieren

Die Verarbeitung bzw. Transformation der Daten kann zwar direkt in Power BI vorgenommen werden, entweder im Power Query Editor, oder via DAX-Code, jedoch ist es hilfreich, bereits vorher damit zu beginnen. Mit anderen Worten, jede Transformation, die nicht in Power BI vorgenommen werden muss, erhöht die Performance.

Ist eine Transformation innerhalb von Power BI erforderlich, weil Du nicht direkt auf die Datenbank zugreifen kannst, so solltest Du die Transformationen bestenfalls Power Query Editor vornehmen.

Fügen wir zum Beispiel eine Spalte hinzu, so sollten wir diese als Computed Column (Power Query, M) und nicht als Calculated Column (DAX) anlegen. Power BI (genauer: der VertiPaq Storage Engine) erzielt meist eine höhere Kompression, wenn wir die Spalten im Power Query Editor – während des Ladeprozesses der Daten – anlegen, wodurch wiederum die Datensatzgröße reduziert wird.

5. „Filter für alle Seiten“ vermeiden

Power BI Filter-Panel mit drei Bereichsfiltern
Panel mit drei Bereichsfiltern

In der Analyse bzw. im Reporting nutzen wir Filter, um unsere Daten auf bestimmte Aspekte order Intervalle zu reduzieren. Wir interessieren uns für Sales von bestimmten Regionen, oder für die Clicks innerhalb eines bestimmten Zeitraums. In Power BI verwenden wir zum Filtern sogenannte „Datenschnitte“ (Slicer). Wir können aber auch das „Filter“-Panel nutzen, um Filter anzuwenden. Hierbei lassen sich drei Ebenen unterscheiden: 1) Filter auf dem Visual, 2) Filter auf der ausgewählten Seite, oder 3) Filter für den gesamten Report. Beachte jedoch: Gilt ein Filter für alle Seiten, dann gilt dieser zugleich für alle Visuals. Hierzu zählen dann auch die Charts, die eigentlich nicht von diesem Filter betroffen sind.

Setze den Filter wenn möglich pro Visual ein, nicht pro Seite, oder sogar auf allen Seiten.

Befinden sich auf einer Seite entsprechend viele Visualisierungen, dann erhöht sich die Zeit, bis die gefilterten Daten geladen sind. Daher empfiehlt es sich, darauf zu verzichten, den „Filter für alle Seiten“ zu verwenden – auch wenn sich dadurch der Aufwand für die Erstellung des Reports erhöht. Natürlich ist es „bequem“, einen reportweiten Filter zu setzen, jedoch gilt: Ein Report wird einmal gebaut, aber mehrfach angeschaut.


Das waren 5 Tipps um eine bessere Performance und Usability für Power BI Reports zu erreichen. Wir hoffen, dir hiermit geholfen zu haben. Falls du noch Fragen hast, dann melde dich doch einfach bei uns.