Geschachtelte IFs sind schlecht lesbar – oder wie der Engländer sagt: “A pain in the ass!” Schnell verliert man den Überblick bei der Klammersuche. Daher wurde die Funktion SWITCH() eingeführt – wir zeigen, wie man mit SWITCH() umgeht sowie einen Trick, mit dem man SWITCH() in ganz anderen Situationen verwenden kann.

Geschachtelte IFs

Wann brauchen wir geschachtelte IFs? Nehmen wir eine Datumstabelle – uns fehlt der Name des Monats. Daher wenden wir eine Regel an:

Damit haben wir folgendes Ergebnis: Monate mit geschachtelten IFs

SWITCH()

Die DAX Funktion SWITCH() macht unsere Anfrage etwas lesbarer. Sie ist definiert als:

SWITCH(, , [, , ]…[, ])

Oder mit anderen Worten: Der erste Parameter wird untersucht. Danach werden die angebotenen Werte geprüft. Stimmt ein überein, wird das entsprechende zurückgegeben. Stimmt kein überein, wird der Werte genommen. Ist kein angegeben, wird BLANK() zurückgegeben. Statt den geschachtelten IFs sieht unsere Monats-Funktion jetzt wie folgt aus:

SWITCH() mit einer Expression und TRUE()

In einer neuen Spalte geben wir die Quartale an – mit geschachtelten IFs kein Problem:

Mit einem SWITCH() scheinbar nicht möglich, da SWITCH() nur auf Gleichheit prüft. Das stimmt allerdings nicht ganz. SWITCH() werten den ersten Ausdruck im jeweiligen Kontext aus und vergleicht diesen mit den jeweils pro Kontext ausgewerteten Vergleichswerten. Der Typ muss natürlich übereinstimmen (Zahlen mit Zeichenketten vergleichen geht schief). Die Funktion TRUE() gibt einen Bool’schen Wert zurück. Dieser wird verglichen mit dem Ergebnis der Vergleichswerte, also beispielsweise [Monat] < 7. Damit können wir alternativ schreiben:

Mit diesem Trick ist also SWITCH() auch in komplexeren Szenarien einsetzbar! image