Angemessene Verwendung von Fehlerfunktionen
Wenn Sie als Datenmodellierer einen DAX-Ausdruck schreiben, der zur Auswertungszeit zu einem Fehler führen könnte, stehen Ihnen zwei hilfreiche DAX-Funktionen zur Verfügung.
- Die ISERROR-Funktion, die einen einzelnen Ausdruck akzeptiert und TRUE zurückgibt, wenn dieser Ausdruck zu Einem Fehler führt.
- Die IFERROR-Funktion, die zwei Ausdrücke akzeptiert. Wenn der erste Ausdruck zu einem Fehler führt, wird der Wert für den zweiten Ausdruck zurückgegeben. Es handelt sich hierbei um eine optimierte Implementierung der Schachtelung der ISERROR-Funktion innerhalb einer IF-Funktion.
Diese Funktionen können jedoch hilfreich sein und dazu beitragen, leicht verständliche Ausdrücke zu schreiben, sie können aber auch die Leistung von Berechnungen erheblich beeinträchtigen. Dies kann passieren, da diese Funktionen die Anzahl der erforderlichen Speichermodulüberprüfungen erhöhen.
Die meisten Auswertungsfehler sind auf unerwartete Leerzeichen oder Nullwerte oder eine ungültige Datentypkonvertierung zurückzuführen.
Empfehlungen
Es ist besser, die Verwendung der funktionen ISERROR und IFERROR zu vermeiden. Wenden Sie stattdessen bei der Entwicklung des Modells und beim Schreiben von Ausdrücken defensive Strategien an. Strategien können Folgendes umfassen:
Sicherstellen, dass Qualitätsdaten in das Modell geladen werden: Verwenden von Power Query-Transformationen, um ungültige oder fehlende Werte zu entfernen oder zu ersetzen und korrekte Datentypen festzulegen. Eine Power Query-Transformation kann auch verwendet werden, um Zeilen zu filtern, wenn Fehler auftreten, z. B. ungültige Datenkonvertierung.
Die Datenqualität kann auch gesteuert werden, indem die Eigenschaft Lässt NULL-Werte zu des Modells auf „Aus“ festgelegt wird, was zum Fehlschlagen der Datenaktualisierung führt, sollten Leerzeichen gefunden werden. Wenn dieser Fehler auftritt, verbleiben daten, die als Ergebnis einer erfolgreichen Aktualisierung geladen wurden, in den Tabellen.
Verwenden der funktion IF: Der logische Testausdruck der IF Funktion kann bestimmen, ob ein Fehlerergebnis auftritt. Beachten Sie, dass diese Funktion wie die ISERROR- und IFERROR-Funktionen zu zusätzlichen Speichermodulscans führen kann, aber wahrscheinlich besser ausgeführt wird als sie, da kein Fehler ausgelöst werden muss.
Verwendung fehlertoleranter Funktionen: Einige DAX Funktionen testen und beheben Fehlerbedingungen. Mit diesen Funktionen können Sie ein alternatives Ergebnis eingeben, das stattdessen zurückgegeben wird. Die DIVIDE-Funktion ist ein solches Beispiel. Weitere Hinweise zu dieser Funktion finden Sie im Artikel DAX: DIVIDE Vergleich zwischen der DIVIDE-Funktion und dem Divisionsoperator (/).
Beispiel
Der folgende Measureausdruck testet, ob ein Fehler ausgelöst wird. Er gibt in diesem Fall BLANK zurück (was passiert, wenn Sie an die IF-Funktion keinen Wert übergeben, wenn der Ausdruck FALSE ist).
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
Diese nächste Version des Maßausdrucks wurde verbessert, indem die Funktion IFERROR anstelle der Funktionen IF und ISERROR verwendet wurde.
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
Diese endgültige Version des Maßausdrucks erzielt jedoch dasselbe Ergebnis auf effizientere und elegantere Weise.
Profit Margin
= DIVIDE([Profit], [Sales])