Verwenden von Variablen zur Verbesserung der Leistung und zur Problembehandlung
Sie können Variablen in Ihren DAX-Formeln verwenden, um so weniger komplexe und effizientere Berechnungen zu schreiben. Variablen werden von Entwicklern, die Power BI Desktop noch recht neu verwendet, eher selten verwendet. Sie sind aber ein effektives Mittel, und Sie sollten sie standardmäßig verwenden, wenn Sie Measures erstellen.
Bei manchen Ausdrücken werden viele geschachtelte Funktionen verwendet, und Ausdruckslogik wird wiederverwendet. Die Verarbeitungszeit dieser Ausdrücke ist länger, und sie sind schwierig zu lesen. Deshalb gestaltet sich auch das Troubleshooting schwieriger. Wenn Sie Variablen verwenden, können Sie die Verarbeitungszeit für Abfragen minimieren. Diese Veränderung ist ein Schritt in die richtige Richtung, um die Leistung eines semantischen Modells zu optimieren.
Wenn Sie in Ihrem semantischen Modell Variablen verwenden, bietet das die folgenden Vorteile:
Verbesserte Leistung: Variablen können die Effizienz von Measures steigern, da Power BI so denselben Ausdruck nicht mehr mehrmals auswerten muss. Dieselben Ergebnisse einer Abfrage lassen sich so in der Hälfte der ursprünglichen Verarbeitungszeit erzielen.
Verbesserte Lesbarkeit: Variablen haben kurze und selbsterklärende Namen und werden anstelle von mehrdeutigen, aus mehreren Wörtern bestehenden Ausdrücken verwendet. Wenn Variablen verwendet werden, lassen sich Formeln für Sie vermutlich einfacher lesen und sind besser zu verstehen.
Einfacheres Debuggen: Sie können Variablen verwenden, um eine Formel zu debuggen und Ausdrücke zu testen. Dies ist besonders während des Troubleshootings hilfreich.
Reduzierte Komplexität: Für Variablen ist die Verwendung der DAX-Funktionen EARLIER und EARLIEST, die schwierig zu verstehen sind, nicht erforderlich. Diese Funktionen waren erforderlich, bevor Variablen eingeführt wurden, und sie wurden in komplexe Ausdrücke geschrieben, die neue Filterkontexte eingeführt haben. Da Sie nun Variablen anstelle dieser Funktionen verwenden können, können Sie weniger komplexe Formeln schreiben.
Verwenden von Variablen zur Leistungsverbesserung
In der folgenden Tabelle sehen Sie, wie Sie eine Variable verwenden können, um ein Measure effizienter zu gestalten. Dort wird eine Measuredefinition auf zwei verschiedene Arten angezeigt. Beachten Sie, dass die Formel den Ausdruck wiederholt, der denselben Zeitraum wie letztes Jahr berechnet, allerdings in zwei verschiedenen Weisen: Die erste Instanz verwendet die normale DAX-Berechnungsmethode. Die zweite verwendet Variablen in der Berechnung.
Die zweite Zeile der Tabelle zeigt die optimierte Measuredefinition. Diese Definition verwendet das VAR-Schlüsselwort, um eine Variable namens SalesPriorYear einzuführen, und sie verwendet einen Ausdruck, um das Ergebnis desselben Zeitraums wie letztes Jahr dieser neuen Variable zuzuweisen. Danach wird die Variable zweimal im RETURN-Ausdruck verwendet.
Ohne Variable
Sales YoY Growth =
DIVIDE (
( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)
Mit Variable
Sales YoY Growth =
VAR SalesPriorYear =
CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
VAR SalesVariance =
DIVIDE ( ( [Sales] - SalesPriorYear ), SalesPriorYear )
RETURN
SalesVariance
In der ersten Measuredefinition in der Tabelle ist die Formel nicht effizient, da sie es erfordert, dass Power BI denselben Ausdruck zweimal auswertet. Die zweite Definition ist effizienter, weil Power BI aufgrund der Variable den PARALLELPERIOD-Ausdruck nur einmal auswerten muss.
Wenn Ihr semantisches Modell mehrere Abfragen mit mehreren Measures hat, könnte die Verwendung von Variablen die gesamte Verarbeitungszeit für Abfragen halbieren und die Gesamtleistung des semantischen Modells so verbessern. Außerdem handelt es sich bei dieser Lösung um eine einfache. Denken Sie hierbei an die möglichen Einsparungen, wenn Formeln komplizierter werden, z. B. wenn Prozentsätze hinzukommen und Gesamtsummen berechnet werden sollen.
Verwenden von Variablen zur Verbesserung der Lesbarkeit
Zusätzlich zur verbesserten Leistung können Sie feststellen, dass die Verwendung von Variablen die Lesbarkeit des Codes vereinfacht.
Wenn Variablen verwendet werden, gilt als Best Practice, beschreibende Namen für die Variablen zu verwenden. Im vorherigen Beispiel heißt die Variable SalesPriorYear (Verkäufe letztes Jahr). Durch einen solchen Namen wird gleich ersichtlich, was die Variable berechnet. Stellen Sie dem gegenüber die Auswirkung der Verwendung einer Variable namens X, temp oder variable1. Hier wäre der Zweck der Variable keinesfalls ersichtlich.
Die Verwendung deutlicher, präziser und bedeutungsvoller Namen macht es einfacher für Sie, nachvollziehen zu können, was berechnet werden soll. Außerdem ist es so auch erheblich einfacher für andere Entwickler, den Bericht zukünftig zu verwalten.
Verwenden von Variablen für das Troubleshooting mehrerer Schritte
Sie können Variablen verwenden, um das Debuggen einer Formel und Identifizieren von Problemen zu unterstützen. Variablen helfen beim Vereinfachen der Troubleshootingaufgabe für Ihre DAX-Berechnung, indem jede Variable einzeln ausgewertet und sie nach dem RETURN-Ausdruck noch mal abgerufen wird.
Im folgenden Beispiel testen Sie einen Ausdruck, der einer Variable zugewiesen ist. Zum Debuggen schreiben Sie den RETURN-Ausdruck vorübergehend neu, damit in die Variable geschrieben wird. Die Measuredefinition gibt nur die Variable SalesPriorYear zurück, weil diese auf den RETURN-Ausdruck folgt.
Sales YoY Growth % =
VAR SalesPriorYear = CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN SalesPriorYear%
Der RETURN-Ausdruck zeigt nur den SalesPriorYear%-Wert an. Durch dieses Verfahren können Sie den Ausdruck wiederherstellen, sobald das Debuggen abgeschlossen ist. Außerdem vereinfacht es das Verständnis von Berechnungen, da die Komplexität des DAX-Codes abgeschwächt wird.