Visual Level Filter sind generell problematisch in Power BI: die Datentransparenz leidet tendenziell durch die leicht zu übersehenden Filter auf Visualeben. Eine besondere Problematik tut sich auf bei der Verwendung von Visual Level Filter auf die gleiche Tabelle in zwei in Beziehung stehenden Visuals.
Ausgangssituation
Wir haben eine einfache (flache) Faktentabelle mit 3 Keyspalten und 2 Wertspalten:
Problematik von Visual Level Filter
Die Faktentabelle wird mit den folgenden beiden Visuals für Costs und Hours visualisiert:
Wird jetzt ein Crossfilter im linken Costs Visual gesetzt, so ändert sich - unerwartet - der Wert für das zugehörige Element im rechten Hours Visual:
Auf das rechte Hours Visual wirkt ohne Crossfilter bereits ein Filter, dessen Herkunft wir später klären:
Bei aktivem Crossfilter wirken aber 3 Filter auf das rechte Hours Visual. Die Herkunft des "Product = Corn" Filters ist klar, aber die Herkunft des Filters "Cost Type <> Type 2" ist unklar und ist wohl die Ursache für den abweichenden Wert bei aktivem Crossfilter:
Das rechte Hours Visual hat den Visual Level Filter "Hour Type <> Type C", das erklärt die Filterung des Visuals bereits im Normalzustand:
Das linke Costs Visual hat ebenfalls einen Visual Level Filter, nämlich "Cost Type <> Type 2". Dieser wirkt zuerst auf das Cost Visual selbst und wird bei aktivem Crossfilter an alle in Beziehung stehenden Visuals weitergegeben und verändert so die Stundenermittlung im rechten Hours Visual:
Lösung mittels Measures
Der Effekt kann sehr einfach mit einer verbreiteten Best Practice beseitigt werden: niemals die Wertspalten (= implizite Measures) in einem Visual verwenden sondern ein explizites Measure anzulegen. Dieses wird mit der Filterbedingung für die korrekte Ermittlung der Kennzahl ausgestattet und der Visual Level Filter kann entfernt werden:
Costs =
CALCULATE(
SUM(Faktentabelle[Costs]);
Faktentabelle[Cost Type] <> "Type 2"
)
Hours =
CALCULATE(
SUM(Faktentabelle[Hours]);
Faktentabelle[Hour Type] <> "Type C"
)
In den Visuals werden jetzt die beiden Measures eingesetzt. Bei aktivem Crossfilter ermitteln beiden Measure das idente Ergebnis wie auch ohne Crossfilter - Problem gelöst:
Fazit
Visual Level Filter sind verlockend, da rasch umgesetzt, aber machen fast immer früher oder später Probleme. Die aufgezeigte Crossfilter-Problematik sollte als Argument gegen die Verwendung von Visual Level Filter gesehen werden.