Entwerfen skalierbarer Berechnungen
Ihr Modell ist strukturiert. Entwerfen Sie jetzt die Berechnungen, die bei wachsenden Datenmengen und wachsendem Team für eine hohe Leistung und Wartungsfreundlichkeit sorgen. Bei kleinem Maßstab funktioniert ein Modell mit doppelten Maßeinheiten und inkonsistenten Namen immer noch, auch wenn es nicht ideal ist. Unter Last bricht es zusammen. Ein Modell mit Hunderten von Measures benötigt Strukturentwurfsentscheidungen, die doppelte Logik verhindern, die Abfragezeit für große Datasets reduzieren und es neuen Teammitgliedern ermöglichen, das Modell ohne Fehler zu verstehen und zu erweitern.
Diese Einheit befasst sich mit drei Mustern: Berechnungsgruppen zur Verringerung der Messverbreitung, DAX-Lesbarkeitsdisziplin für die Teamaufrechterhaltung und Aggregationen für die Abfrageleistung in großen Faktentabellen.
Berechnungsgruppen
Berechnungsgruppen sind Modellobjekte, die dasselbe Berechnungsmuster für mehrere Measures anwenden. Anstatt separate Measures für jede Variation zu erstellen, definieren Sie das Muster einmal und wenden es dynamisch an.
Die Berechnungsgruppen beheben Probleme
Betrachten Sie eine Organisation mit 50 Basismaßnahmen (z. B. Total Sales, Total Cost, Profit und Units Sold). Jedes Maß benötigt Berechnungen vom Jahr bis heute, vom Quartal bis heute und vom Monat bis heute. Ohne Berechnungsgruppen sind das 50 × 3 = 150 zusätzliche Messungen. Fügen Sie Vergleiche im Vorjahr hinzu, und Sie sehen sich 250+ Maßnahmen an, die beibehalten werden sollen.
Bei Berechnungsgruppen erstellen Sie eine Gruppe mit Berechnungselementen für jedes Zeitintelligenzmuster. Diese Elemente gelten automatisch für jede Kennzahl im Modell.
Funktionsweise von Berechnungsgruppen
Eine Berechnungsgruppe enthält Elemente, die jeweils einen DAX-Ausdruck definieren, der die aktuelle Messung unter Verwendung von SELECTEDMEASURE() modifiziert. Dies ist eine Berechnungsgruppe für Zeitintelligenz-Anwendungen:
// Year-to-Date
CALCULATE(
SELECTEDMEASURE(),
DATESYTD('Date'[Date])
)
// Quarter-to-Date
CALCULATE(
SELECTEDMEASURE(),
DATESQTD('Date'[Date])
)
// Month-to-Date
CALCULATE(
SELECTEDMEASURE(),
DATESMTD('Date'[Date])
)
** Wenn ein Benutzer die Berechnungsgruppe zu einem visuellen Element hinzufügt, kann er zwischen YTD, QTD und MTD für jedes Maß (z. B. Gesamterlös, Gewinn oder verkaufte Einheiten) ohne separate Maße für jede Kombination wechseln.
Dynamische Formatzeichenfolgen
Dynamische Formatzeichenfolgen ändern das Anzeigeformat basierend auf dem Berechnungselementkontext. Beispielsweise sollte eine Prozentberechnung als Prozentsatz angezeigt werden, während Währungsberechnungen als Währung angezeigt werden sollen, auch wenn sie auf dasselbe Basismaß angewendet werden.
// In the format string expression for a YoY % calculation item:
"0.0%"
Dynamische Formatzeichenfolgen reduzieren die Notwendigkeit separater formatierter Berechnungen und gewährleisten eine konsistente Formatierung im gesamten Modell.
Tipp
Weitere Informationen zum Erstellen von Berechnungsgruppen in Power BI.
Wann man Berechnungsgruppen verwendet
Verwenden Sie Berechnungsgruppen, wenn Sie drei oder mehr Measures haben, die dasselbe Berechnungsmuster anwenden müssen. Häufige Anwendungsfälle sind Zeitberechnungen (YTD, QTD, MTD), Währungsumrechnungen und Varianzberechnungen (Ist-Zahlen gegenüber dem Budget).
DAX-Lesbarkeitsprinzip
Bei einer Skalierung mit einem Team, das mehr als 200 Messungen verwaltet, ist die Lesbarkeit eine Designentscheidung und keine personenbezogene Präferenz. Konsistente, lesbare DAX reduziert Wartungsfehler und erleichtert es neuen Teammitgliedern, das Modell zu verstehen.
Variables
Variablen speichern Zwischenergebnisse, verbessern die Lesbarkeit und verhindern, dass das Modul denselben Ausdruck mehrmals auswertet:
Profit Margin =
VAR TotalRevenue = SUM(Sales[Revenue])
VAR TotalCost = SUM(Sales[Cost])
VAR ProfitAmount = TotalRevenue - TotalCost
RETURN
DIVIDE(ProfitAmount, TotalRevenue)
Ohne Variablen kann derselbe SUM(Sales[Revenue]) Ausdruck dreimal in einem komplexen Maß angezeigt werden. Variablen werten den Ausdruck einmal aus und verwenden das Ergebnis wieder.
Tipp
Erfahren Sie mehr über die Verwendung von Variablen zur Verbesserung von DAX-Formeln.
Benennungskonventionen
Eine konsistente Benennung ist wichtig, wenn Ihr Modell Hunderte von Maßnahmen aufweist, die von mehreren Personen verwaltet werden. Einrichten von Konventionen für:
- Maßnahmenamen: Verwenden Sie klare, beschreibende Namen wie "Gesamtumsatz" oder "Jahreswachstum im Jahresvergleich". Vermeiden Sie Abkürzungen, die nur der ursprüngliche Autor versteht.
-
Variablennamen: Verwenden Sie beschreibende Namen, die den Zwischenwert erläutern (z
TotalRevenue. B. stattxodertemp). - Berechnungsgruppenelemente: Benennen Sie Elemente nach ihren Aufgaben, nicht deren Funktionsweise (z. B. "Year-to-Date" anstelle von "DATESYTD Wrapper").
Eine aussagekräftige Benennung ist auch für den KI-Verbrauch wichtig. Wenn Copilot oder ein Datenagent Ihr Modell abfragt, verwendet er Maßnahmennamen und Beschreibungen, um festzulegen, welche Berechnungen einbezogen werden sollen. Ein Maß namens "YoY Revenue Growth" erzeugt bessere KI-Ergebnisse als "Calc7_v2".
Tipp
Copilot in Power BI kann helfen, DAX-Formeln zu schreiben und zu erläutern. Wenn Sie an komplexen Measures arbeiten, verwenden Sie Copilot, um Verbesserungen vorzuschlagen oder vorhandene Logik zu erläutern.
Iteratoren im Vergleich zu Aggregationsfunktionen
Iteratorfunktionen (SUMX, AVERAGEX, MAXX) werten einen zeilenweisen Ausdruck über einer Tabelle aus. Aggregationsfunktionen (SUM, AVERAGE, MAX) werden für eine einzelne Spalte ausgeführt. Bei großen Datenvolumes ist die Auswahl von Bedeutung:
- Verwenden Sie Aggregationsfunktionen, wenn Sie eine einzelne Spalte zusammenfassen. Sie sind schneller, da das Modul vordefinierte Datenstrukturen verwenden kann.
- Verwenden Sie Iteratoren, wenn für die Berechnung ein Ausdruck auf Zeilenebene erforderlich ist (z. B.
Quantity × UnitPricepro Zeile).
Hinweis
Iteratoren verarbeiten jede Zeile, die sich auf die Leistung in großen Faktentabellen auswirken kann.
Informationsfunktionen für Abwehrmuster
Informationsfunktionen wie ISBLANK, HASONEVALUE und ISINSCOPE erstellen Abwehrmuster für Messgrößen, die in mehreren Berichten mit unterschiedlichen Filterkontexten genutzt werden.
Sales per Customer =
IF(
HASONEVALUE(Customer[CustomerID]),
DIVIDE(SUM(Sales[Amount]), 1),
DIVIDE(SUM(Sales[Amount]), DISTINCTCOUNT(Sales[CustomerID]))
)
Diese Muster verhindern unerwartete Ergebnisse, wenn Measures in Kontexten verwendet werden, die der ursprüngliche Autor nicht erwartet hat.
Aggregationen
Aggregationen sind Zusammenfassungstabellen, in denen vorab berechnete Summen mit einem höheren Korn als die Detaildaten gespeichert werden. Abfragen treffen zuerst diese Tabellen, wodurch die Leistung in großen Faktentabellen verbessert wird. Wenn eine Abfrage mit einer Aggregation übereinstimmt, gibt das Modul Ergebnisse aus der kleineren Zusammenfassungstabelle zurück, anstatt Millionen von Detailzeilen zu scannen.
Aggregationen als Entwurfsentscheidung
Die Entscheidung, wann Aggregationen hinzugefügt werden und in welcher Granularität, ist eine Entwurfsentscheidung. Leistungsüberwachung und Optimierung sind separate betriebliche Bedenken, aber Sie treffen die strukturelle Auswahl während des Modellentwurfs.
Berücksichtigen Sie Aggregationen in folgenden Fällen:
- Faktentabellen überschreiten Millionen von Zeilen und häufig verwendete Abfragen fassen Daten mit einem höheren Korn zusammen (z. B. monatliche Summen nach Region).
- Benutzer erhalten langsame Abfrageantwortzeiten für visuelle Elemente auf Zusammenfassungsebene.
- Die meisten Berichtsinteraktionen benötigen keine Details auf Zeilenebene.
Unterschiede des Aggregationsverhaltens nach Speichermodus
Im Importmodus werden Aggregationen als separate ausgeblendete Tabellen gespeichert. Das Modul leitet automatisch übereinstimmende Abfragen an die Aggregationstabelle weiter.
Im Direct Lake-Modus können die Delta-Tabellen selbst als Aggregationsquellen dienen. Da Direct Lake spaltenorientierte Parquet-Dateien liest, kann die Engine größere Datenmengen ohne Aggregationen in vielen Szenarien verarbeiten. Fügen Sie Aggregationen nur hinzu, wenn Abfragemuster die Notwendigkeit bestätigen.
Tipp
Erfahren Sie mehr über benutzerdefinierte Aggregationen in Power BI.