Bericht automatisch auf aktuelles Datum filtern mit berechneter Spalte und mit Measure

April 11, 2021
Denis Selimovic
Power BI Grundlagencomment 3Created with Sketch Beta.2 comments

This post is also available in: Englisch


Einem jedem Power BI Entwickler stellt sich früher oder später die Frage wie kann ich eigentlich ein bestimmtes Visual oder den ganzen Report automatisch auf das heutige Datum filtern.
Dies lässt sich auf zwei Arten erledigen:

  1. Mit einer Calculated Column (funktioniert immer)
  2. Mit einem Measure (funktioniert in spezifischen Fällen)

Der Ansatz mit einer Calculated Column ist deutlich robuster, da Measures generell nicht als Filter verwendet werden können bzw. sollten. Wenn das Datum jedoch im Filterkontext vorhanden ist, dann ist dies auch mit einem Measure möglich, weshalb ich beide Varianten vorstellen werde.

Mit berechneter Spalte auf das heutige Datum filtern

Wie gerade gesagt ist das Filtern per calculated column der stabilere der beiden Ansätze. Hierbei wird eine neue calculated column in der Datums-Dimension angelegt, bei der einfach überprüft wird, ob das Datum in der jeweiligen Zeile dem heutigen Datum entspricht:

IsToday = IF( 'Date'[Date] = TODAY(), 1, 0 )

Auf diese Weise ist der Inhalt der neuen berechneten Spalte immer “0”, außer für das aktuelle Datum. An diesem Tag zeigt die Zeile eine “1” an:

Spalte "IsToday" kennzeichnet das heutige Datum mit einer "1" als Wert
Spalte “IsToday” kennzeichnet das heutige Datum mit einer “1” als Wert

Die neue Spalte kann nun verwendet werden um einzelne Visuals oder auch den ganzen Report auf das heutige Datum zu filtern. Sobald sich der Tag ändert, ändert sich auch der Wert in der calculated column und der Report passt sich entsprechend an das neue Datum an:

Filtern des Reports auf das heutige Datum
Filtern des Reports auf das heutige Datum

Mit Measure auf das heutige Datum filtern

Eine weniger geläufige Methode ist es einzelne Visuals per Measure zu filtern. Hierbei wird die Differenz zwischen dem Datum und dem heutigen Tag ermittelt. Wenn diese Differenz 0 ist handelt es sich um den heutigen Tag. Die Formel lautet:

IsTodayMeasure = DATEDIFF( MAX( 'Date'[Date] ), TODAY(), DAY )

Der einzige Nachteil, das Measure benötigt einen Filtercontext. Dies bedeutet es funktioniert nur in Visuals, bei denen das Datum beispielsweise in Zeilen oder auf einer Achse vorhanden ist. Sobald das Datum nicht als Filterkontext vorhanden ist, wie in einem Card-Visual, kann das Measure nicht zum Filtenr verwendet werden.

Das Beispiel habe ich hier demonstriert:

Die Tabelle kann per Measure gefiltert werden, die Card leider nicht
Die Tabelle kann per Measure gefiltert werden, die Card leider nicht

Zusammenfassung

Wie gerade gezeigt kann ein Bericht mit wenig Aufwand per berechneter Spalte auf das heutige Datum gefiltert werden. Diese Methode ist sehr robust und hat den Vorteil, dass sich der Report automatisch auf das aktuelle Datum anpasst. Die Möglichkeit per Measure existiert in speziellen Konstellationen, wenn die Datumsspalte im Filterkontext des Visuals vorhanden ist. Die Möglichkeit finde ich persönlich sehr elegant, allerdings kann sie nicht durchgängig eingesetzt werden. Daher ist diese eher als “Entwicklungsfeature”, um ein bestimmtes Visual zu filtern, einzustufen. Ich würde aber davon abraten, dies in einem produktiven Report einzusetzen.