Wenn ein Power-BI-Bericht bei zwei Klicks 30 Sekunden warten lässt, hört der Nutzer nach 3 Wochen auf, ihn zu öffnen. Langsamkeit ist nicht nur eine Geduldsprobe; sie ist der Feind der Adoption. Die gute Nachricht: In 80 % der langsamen Berichte können 3–5 konkrete Verbesserungen die Ladezeit halbieren. In diesem Beitrag behandeln wir 10 praktische Optimierungstechniken – von der VertiPaq-Engine bis zum Visual-Design.
01. Entfernen Sie unnötige Spalten aus dem Modell
Jede Spalte, die Sie ins Modell importieren, belegt Speicher und wird indiziert. Nach der Logik „vielleicht brauche ich sie“ hinzugefügte Spalten blähen das Modell um das 3- bis 5-Fache auf, wenn sie nicht komprimierbar sind oder Text mit hoher Kardinalität (Kundenname, Adresse).
Das Prinzip: Eine Spalte, die der Bericht nicht nutzt, gehört nicht ins Modell. Sie sollte in der Power-Query-Phase entfernt und nicht in berechnete Tabellen übertragen werden.
02. Teilen Sie Spalten mit hoher Kardinalität
Wird eine Datum-Zeit-Spalte bis auf die Mikrosekunde geführt, ist das für VertiPaq eine Katastrophe. Teilen Sie sie in getrennte Datums- (date) und Zeit- (time) Spalten, werden beide niedrig-kardinal und die Komprimierung steigt dramatisch.
Dieselbe Logik: Genügen bei voll dezimalen Preisen 2–3 Stellen, runden Sie den Rest. Ein unsichtbarer, aber entscheidender Speichergewinn.
03. Verwenden Sie keine Spaltenberechnung statt einer Kennzahl
In DAX kann eine Berechnung an zwei Stellen erfolgen: als berechnete Spalte (calculated column) und als Kennzahl (measure). Die Regel: Die Kennzahl ist zu bevorzugen.
Eine berechnete Spalte wird für jede Zeile vorab berechnet und im Modell gehalten (nicht komprimierbar, belegt Speicher). Eine Kennzahl läuft zur Abfragezeit, ist filtersensitiv und vergrößert das Modell nicht. Ausnahme: Für einen dimensionsbasierten SLICER ist eine berechnete Spalte nötig.
04. Ersetzen Sie IF-Ketten durch SWITCH
Aufeinanderfolgende IF()-Aufrufe sind sowohl schwer zu lesen als auch rechnerisch teuer. Die Struktur SWITCH(TRUE()) ist sowohl lesbarer als auch von der Engine optimiert:
Schlecht: IF([A]>10, "H", IF([A]>5, "M", IF([A]>1, "L", "N")))
Gut: SWITCH(TRUE(), [A]>10, "H", [A]>5, "M", [A]>1, "L", "N")
Eine kleine Änderung sorgt bei großen Kennzahlen für eine messbare Beschleunigung.
05. Verwenden Sie KEEPFILTERS statt FILTER
Die Kombination CALCULATE + FILTER innerhalb einer Kennzahl ist klassisch, aber FILTER durchsucht alle Zeilen der Tabelle. Für einfache Vergleiche ist KEEPFILTERS effizienter:
Schlecht: CALCULATE([Sales], FILTER(Products, Products[Category] = "Electronics"))
Gut: CALCULATE([Sales], KEEPFILTERS(Products[Category] = "Electronics"))
Um den Unterschied zu messen, kann das Query-Plan-Werkzeug von DAX Studio verwendet werden.
06. Bauen Sie ein Sternschema (vermeiden Sie Snowflake und Flat)
Das Sternschema ist ideal für die Komprimierungsmathematik von VertiPaq. Snowflake verlangsamt; ein flaches Modell sprengt den Speicher. Das ist die grundlegende Entscheidung beim Modellaufbau.
Details finden Sie in unserem Beitrag Power-BI-Datenmodell: Sternschema.
07. Vermeiden Sie bidirektionale Beziehungen
Beziehungen bidirektional zu machen, wirkt verlockend, zwingt die Abfrage-Engine aber zu komplexen Joins. Eine einseitige (single) Beziehung ist sowohl schneller als auch vorhersehbarer.
In den meisten Szenarien, in denen bidirektional nötig scheint, lässt sich innerhalb einer Kennzahl mit CROSSFILTER() lokal ein bidirektionales Verhalten auslösen; eine dauerhafte bidirektionale Beziehung im Modell ist nicht nötig.
08. Begrenzen Sie die Zahl der Visuals
20+ Visuals auf einer Seite sind sowohl für den Nutzer als auch für die Abfrage-Engine anstrengend. Jedes Visual wird zu einer eigenen Abfrage; alles, was auf dem Bildschirm sichtbar ist, wird parallel berechnet.
Die Regel: 8–12 Visuals pro Seite sind optimal. Verlagern Sie mehr auf Unterseiten oder in Drill-throughs.
09. Verwenden Sie Aggregations
Selbst wenn Sie eine Faktentabelle mit Milliarden Zeilen haben, ist nicht immer das Detail nötig. Der Überblick begnügt sich meist mit der monatlichen Summe. Das Aggregations-Feature berechnet häufig genutzte Summen vorab und hält sie im Speicher; es liefert die Antwort aus dieser Übersichtstabelle statt aus der Haupt-Faktentabelle.
Eine 10- bis 100-fache Beschleunigung ist möglich, doch der Aufbau erfordert Sorgfalt; jede Kennzahl muss in jeder Dimension korrekt delegieren.
10. Verwenden Sie Incremental Refresh
Eine Faktentabelle mit Millionen Zeilen bei jeder Aktualisierung von Grund auf zu ziehen, ist unnötig. Der Incremental Refresh aktualisiert nur die Daten der letzten X Tage; alte Partitionen bleiben im Cache.
Bei einer nach Monaten partitionierten Tabelle sinkt die Aktualisierungszeit von der Größenordnung Stunden auf Minuten. Nutzbar mit der Lizenz Power BI Premium (und Pro Fabric); in Power BI Pro ist die Unterstützung begrenzt.
Entdecken Sie unsere Lösung Power BI
Für ausführliche Informationen können Sie ein kostenloses Beratungsgespräch buchen.