Prüfen, ob ein Text einen bestimmten Wert enthält in DAX

February 26, 2023
Denis Selimovic
DAXcomment 3Created with Sketch Beta.2 comments

This post is also available in: Englisch

Mussten Sie schon einmal prüfen, ob ein Text einen bestimmten Wert enthält? Dieses Thema mag zwar recht banal erscheinen, aber es ist eines, das mir bei meiner eigenen Arbeit immer wieder begegnet ist. Und ich bin sicher, dass es vielen anderen auch so geht.
In diesem kurzen Artikel werden wir untersuchen, wie man diese Situation mit Hilfe von DAX lösen kann. Mit nur ein paar Zeilen Code können Sie leicht feststellen, ob Ihr Text den gewünschten Wert enthält oder nicht.

Beispiel für unseren Artikel

Vielleicht habe ich in der Vergangenheit zu viel mit AdventureWorks gearbeitet, aber nehmen wir einmal an, wir verkaufen Fahrräder und haben eine Produkttabelle. Unser kleines Beispiel sieht wie folgt aus:

Zu kategorisierende Produkte
Zu kategorisierende Produkte

Für diese Spalte wollen wir nun prüfen, ob sie den Text “bike” enthält oder nicht.

Die einzige Funktion, die Sie benötigen, ist CONTAINSSTRING

In diesem Fall könnten wir einen einfachen Ansatz wählen und eine berechnete Spalte hinzufügen, um in “Bikes” und ” Accessory” zu kategorisieren. Dazu wollen wir nur prüfen, ob der Wert das Wort “bike” enthält.

Die Lösung ist recht einfach, da die Funktion CONTAINSSTRING prüft, ob ein bestimmter Text eine bestimmte Zeichenfolge enthält. In unserem Fall wird die folgende berechnete Spalte TRUE zurückgeben, wenn der Text “bike” gefunden wird, und FALSE, wenn er nicht gefunden wird:

Contains Bike = CONTAINSSTRING( Products[Productname], "bike" )

Und das Ergebnis zeigt nun, welches Element das Wort “Bike” enthält und welches nicht:

Berechnete Spalte mit CONTAINSSTRING
Berechnete Spalte mit CONTAINSSTRING

Die Kombination mit einer IF-Anweisung liefert das gewünschte Ergebnis

Wenn Sie dies nun mit einer IF- oder SWITCH-Anweisung kombinieren, erhalten Sie die von uns gewünschte Kategorisierung als berechnete Spalte.

Category = 
IF(
    CONTAINSSTRING( Products[Productname], "bike" ),
    "Bike",
    "Accessory"
)

Die neue Spalte enthält nun unsere Kategorisierung:

image 3
Neue Spalte, wenn die Spalte den Text “bike” enthält

Groß- und Kleinschreibung mit CONTAINSROW

Jetzt bleibt nur noch die Frage, ob die Funktion CONTAINSROW Groß- und Kleinschreibung berücksichtigt oder nicht. Die Antwort ist ganz einfach: nein, es unterstützt keine case-sensitiven Werte. Es spielt also keine Rolle, ob man “bike” oder “Bike” oder “bIkE” in die Funktion schreibt, sie wird denselben Wert zurückgeben.

Natürlich kann dieser Ansatz auch innerhalb eines DAX-Measures verwendet werden, aber ich hatte das Gefühl, dass es einfacher ist, dies anhand einer berechneten Spalte zu erklären.

Demo-Datei herunterladen

Die Demo-Datei kann hier heruntergeladen werden: