DAX‑Performance verstehen

Gewähltes Thema: DAX‑Performance verstehen. Schnelle Berichte liefern Vertrauen, Fokus und bessere Entscheidungen. Hier erfährst du praxisnah, wie du deine DAX‑Maße beschleunigst, Engpässe erkennst und dein Datenmodell so aufstellst, dass Leistung kein Zufall bleibt.

Wie DAX rechnet: Formula Engine und Storage Engine im Zusammenspiel

Zwei Motoren, ein Ziel

Die Formula Engine interpretiert Ausdrücke und baut Pläne, die Storage Engine liefert komprimierte Spalten-Daten aus VertiPaq. Je mehr Arbeit die Storage Engine im spaltenweisen Batchmodus erledigt, desto schneller werden deine Abfragen – zielgerichtete DAX‑Formeln helfen dabei.

Batchmodus, Dictionary und Segmente

VertiPaq arbeitet spaltenorientiert mit Wörterbüchern und Segmenten. Niedrige Kardinalität, korrekte Datentypen und saubere Beziehungen erlauben effiziente Batch‑Scans. Das reduziert CPU‑Last in der Formula Engine und verkürzt Wartezeiten drastisch.

Eine kurze Anekdote aus dem Alltag

Bei einem Vertriebsreport fiel die Ladezeit von 12 auf 2 Sekunden, nachdem eine rechenintensive FILTER‑Schleife in ein Aggregat mit SUMMARIZECOLUMNS überführt wurde. Gleiches Ergebnis, aber mehr Arbeit für die Storage Engine statt die Formula Engine.

Modell vor Measure: Datenmodellierung als Performance‑Turbo

Faktentabelle in der Mitte, Dimensionen außen: Das Sternschema minimiert Joins, vereinfacht Filterpropagation und verbessert Komprimierung. So kann die Storage Engine Anfragen effizient bündeln und weniger Zeilen bewegen.
SUMX läuft Zeile für Zeile und kann die Formula Engine belasten. Prüfe zuerst, ob eine einfache Aggregation wie SUM, MIN oder MAX reicht. Wo möglich, baue die Logik in das Modell statt in eine zeilenweise Schleife.
FILTER über große Tabellen erzeugt umfangreiche Row‑Sets. Begrenze den Umfang früh durch Dimensionen oder Voraggregation, nutze CALCULATE mit sauberen Filterausdrücken und meide verschachtelte FILTER‑Kaskaden ohne selektive Prädikate.
Zwischenergebnisse mit VAR speichern verhindert doppelte Berechnung und ermöglicht der Engine bessere Optimierungen. Oft sinkt die Zeit messbar, weil Ausdrücke nur einmal evaluiert und dann wiederverwendet werden.
CALCULATE ändert den Filterkontext und triggert Kontextübergänge. Verwende präzise Filterausdrücke statt komplexer boolescher Logik. Je klarer die Filter, desto besser kann die Engine Speicher‑Scans optimieren.

Kardinalität bewusst steuern

Hohe Kardinalität bläht Dictionaries und Segmente auf. Gruppiere selten benötigte Präzision, splitte Zeitstempel in Datum und Zeit und überlege, ob Texte kategorisiert werden können, um Wiederholungen zu erhöhen.

Datentypen richtig wählen

Ganze Zahlen komprimieren besser als Dezimalzahlen, Boolesche Spalten oft am besten. Wähle kleinste sinnvolle Typen und vermeide unnötige Formatierungen direkt in Daten. Anzeigeformat kann im Bericht erfolgen.

Diagnose und Messung: Ohne Zahlen keine Optimierung

Aktiviere Server Timings, analysiere Storage‑ und Formula‑Zeit getrennt und inspiziere den Abfrageplan. Suche nach teuren Scans, CallbackDataID und iterativen Mustern, um gezielt Gegenmaßnahmen einzuleiten.

Diagnose und Messung: Ohne Zahlen keine Optimierung

Miss Visual‑, DAX‑ und Render‑Zeit separat. Manchmal ist die langsame Visualisierung schuld, nicht DAX. Dokumentiere deine Messungen, damit Verbesserungen nachvollziehbar und reproduzierbar bleiben.

Vorsicht vor LOOKUP‑Lawinen

Mehrere LOOKUPVALUE‑Aufrufe über große Fakten erzeugen unnötige Iteration. Prüfe Alternativen mit Beziehungen, TREATAS oder vorberechneten Dimensionen. Oft ist Modellierung der Schlüssel statt zusätzlicher DAX‑Logik.

Übermäßige DISTINCT‑Aufrufe

DISTINCT auf großen Spalten kann sehr teuer sein. Hinterfrage, ob du wirklich Eindeutigkeit brauchst, oder ob eine geeignete Dimension denselben Effekt schneller und sparsamer erzielt.

Regeln dokumentieren und teilen

Lege Team‑Guidelines zu Modellierung, Measure‑Namenskonventionen und Diagnose fest. Abonniere unseren Newsletter für tiefergehende DAX‑Performance‑Guides und poste deine Lieblings‑Optimierung als Kommentar – die Community lernt mit.
Totalcleanchicago
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.