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 Funktion ISERROR, die einen einzelnen Ausdruck akzeptiert und TRUE zurückgibt, wenn dieser Ausdruck zu einem Fehler führt.
  • Die Funktion IFERROR, die zwei Ausdrücke verwendet. 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.

Auch wenn diese Funktionen hilfreich sein und zum Schreiben leicht verständlicher Ausdrücke beitragen können, so können sie doch auch die Leistung von Berechnungen erheblich beeinträchtigen. Dies liegt daran, dass diese Funktionen die Anzahl der erforderlichen Scans der Speicher-Engine erhöhen.

Die meisten Auswertungsfehler sind auf unerwartete Leerzeichen oder Nullwerte oder eine ungültige Datentypkonvertierung zurückzuführen.

Empfehlungen

Es empfiehlt sich, die Funktionen ISERROR und IFERROR zu vermeiden. Setzen Sie stattdessen bei der Entwicklung des Modells und beim Schreiben von Ausdrücken auf Abwehrstrategien. Mögliche Strategien:

  • Sicherstellen, dass Qualitätsdaten in das Modell geladen werden: Verwenden Sie Power Query-Transformationen, um ungültige oder fehlende Werte zu entfernen oder zu ersetzen und richtige Datentypen festzulegen. Eine Power Query-Transformation kann auch dazu dienen, Zeilen zu filtern, wenn Fehler wie eine ungültige Datenkonvertierung auftreten.

    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. Bei Auftreten dieses Fehlers verbleiben die durch eine erfolgreiche Aktualisierung geladenen Daten in den Tabellen.

  • Verwenden der IF-Funktion: Mit dem logischen Testausdruck der IF-Funktion kann bestimmt werden, ob möglicherweise ein Fehlerergebnis auftritt. Beachten Sie, dass diese Funktion wie die Funktionen ISERROR und IFERROR zu zusätzlichen Scans durch die Speicher-Engine führen kann, aber wahrscheinlich eine bessere Leistung bringt, da kein Fehler ausgelöst werden muss.

  • Verwenden fehlertoleranter Funktionen: Einige DAX-Funktionen testen und kompensieren Fehlerbedingungen. Mit diesen Funktionen können Sie ein alternatives Ergebnis eingeben, das stattdessen zurückgegeben wird. Die Funktion DIVIDE ist ein solches Beispiel. Weitere Anleitungen zu dieser Funktion finden Sie in im Artikel DAX: 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 Measureausdrucks wurde durch die Verwendung der IFERROR-Funktion anstelle der Funktionen IF und ISERROR verbessert.

Profit Margin
= IFERROR([Profit] / [Sales], BLANK())

Diese endgültige Version des Measureausdrucks führt jedoch zu dem gleichen Ergebnis, ist aber effizienter und eleganter.

Profit Margin
= DIVIDE([Profit], [Sales])