Power BI – Performance von Abfragen mit DAX Studio testen

Die Frage nach der Performance von DAX-Abfragen in Power BI kann mal durchaus eine Rolle spielen, wenn es darum geht, nachzuvollziehen, ob nicht ggf. eine andere Abfrage weniger Zeit in Anspruch nehmen würde. Ebenso die Fragestellung, ob mit Datenmodellen mit Beziehungen oder wahlweise einer einzigen Tabelle, die z.B. aus einer Datenbankabfrage stammt, vorzugsweise gearbeitet werden könnte/sollte, aus Gründen der Performance.

Um solchen Fragestellungen nachzukommen, werden Tools benötigt. Zwar bietet Power BI selbst es an, mit einer sog. Leistungsanalyse zu messen, wieviel Zeit wofür verwendet wird, dennoch ist dieses Vorgehen nicht im Detail aussagekräftig, um Schlüsse zu ziehen, inwiefern meine enthaltenen Abfragen performant sind oder nicht.

Die Leistungsanalyse lässt sich wie folgt öffnen:

Registerkaste „Anzeigen“ -> Leistungsanalyse

clip_image002

Ein Klick auf die Schaltfläche „Aufzeichnung starten“ setzt den Vorgang der Analyse des gegenwärtig geöffneten Berichts in Gang, sofern ein Klick auf eine Tabelle oder ein Objekt auf der Berichtsseite erfolgt.

clip_image004

Die Leistungsanalyse zeigt an, wieviel Zeit (ms) benötigt wird, um die einzelnen im Bericht enthaltenen Objekte auszuführen. Wie auf dem oberen Screenshot abgebildet, wurde hieraus ein Objekt ausgewählt. Diesem lässt sich entnehmen, dass die DAX-Abfrage 9 (ms) dauert, die Visualanzeige 34 (ms), usw.

Um detailreichere Informationen zu erhalten, kann nun der untenstehende Befehl „Abfrage kopieren“ ausgeführt werden, um eine Analyse in DAX Studio vorzunehmen. DAX Studio ist ein Tool, welches von hier heruntergeladen werden kann: https://daxstudio.org/

Weiter geht es nun im geöffneten und mit der Datenquelle verbundenen PBI Datei.

Die kopierte Abfrage kann ohne weiteres übernommen werden, indem sie im DAX Studio hineinkopiert, anschließend markiert und ausgeführt (Schaltfläche „Run“ oder auch mit F5 möglich) wird.

Nachfolgend die ausgewählte Abfrage:

// DAX Query

DEFINE

VAR __DS0Core =

SUMMARIZECOLUMNS('Sales'[Fiscal Quarter], "FVTB_", 'Sales'[FVTB$])

VAR __DS0BodyLimited =

TOPN(1002, __DS0Core, 'Sales'[Fiscal Quarter], 1)

EVALUATE

__DS0BodyLimited

ORDER BY

'Sales'[Fiscal Quarter]

Um umfangreiche Informationen zu erhalten, ist es empfehlenswert, folgende Einstellungen vorzunehmen:

clip_image006

Im unteren Fenster Bereich erscheinen die Auswertungen:

clip_image008

Interessant ist es sich die „Server Timings“, „Results“ und „Query Plan“ anzuschauen.

Hier wird nun deutlich, was sich hinter den Kulissen abspielt. Zum einen ist es interessant zu sehen, wie lang die Abfrage dauert, zum anderen aber auch, wie sich die Abfragezeit auf die Formular Engine sowie Storage Engine auswirkt.

Eine weitere Möglichkeit bietet sich an, indem in Power BI Desktop die Leistungsanalyse als Datei im JSON Format gespeichert wird, um sie komplett im DAX Studio zu analysieren.

clip_image010

Dies erfolgt über die Registerkarte „Home“ -> „Load Perf Data

clip_image012

Die abgespeicherte Datei wird geladen und kann nun ausgewertet werden, siehe Screenshot.

clip_image014

Unten in der Registerkarten Übersicht ist der Reiter „PBI Performance“ hinzugekommen, dort sind alle in der Berichtsseite enthaltenen Abfragen, die sich auf die einzelnen Berichtsobjekte beziehen, aufgelistet. Sie lassen sich per Doppelklick als DAX-Ausdruck aufrufen und ausführen.

Zusammenfassend lässt sich folgendes über DAX Studio als Fazit ziehen:

Ein Open-Source-Tool wie das DAX Studio ist nützlich für die Erstellung, Diagnose sowie Leistungsoptimierung und Analyse von DAX Ausdrücken im Allgemeinen. Zu den Features gehören Objektsuche, Integrierte Ablaufverfolgung, Aufschlüsselung der Abfrageausführung mit detaillierten Statistiken, Hervorhebung und Formatierung der DAX-Syntax.

Tipp: Mit dem DAX Studio lassen sich ebenso DAX Ausdrücke unter Verwendung der DAX Functions erstellen und testen. Leider würde dies ohne die Ausgabe als “Row” scheitern, inkl. der “Row”-Function wird dieser skalarer Wert berechnet und ausgegeben.

Beispiel:

clip_image016

Die einzelnen Schritte:

Schritt 1:Evaluate“ muss hier händisch vorneweg eingegeben werden

Schritt 2: Function „Row“ auswählen auf der linken Seite im Menü oder per Hand eingeben

Schritt 3: Linkes Menü “Metadata” die für die Berechnung nötigen Felder per Doppelklick auswählen

image

Schritt 4: Ausdruck inkl. Evaluate markieren und ausführen.

Viel Spaß damit

Kommentare sind geschlossen