Die Skalierung von Diagrammen in Power BI kannn seit geraumer Zeit dynamisch - d.h. mittels Measures - gesteuert werden. In diesem Beitrag wird ein einfaches Beispiel gezeigt und die grundsätzliche Ermittlung des Skalierungsfaktors mit der DAX Iterator Funktion MAXX() vorgestellt.
Ausgangssituation
Die automatische Skalierung in Power BI ist nicht immer optimal, in diesem Fall hier wird etwas zu groß skaliert, sodaß unnötig viel Platz oberhalb der Säulen bleibt:
Aktive Steuerung
Die Ermittlung des Skalierungsfaktors erfolgt über die DAX Iterator Funktion MAXX(). Im vorliegenden Fall wird die Berechnung einzeln für die beiden Measures ACTUAL und BUDGET durchgeführt und dann der größere Wert aus den beiden Teilergebnissen ermittelt:
SCALE Column Chart =
// Ermittlung des größten Periodenwertes in der aktuellen Selektion, die zeitliche Ermittlungsebene ist vordefiniert
VAR var_ACT =
MAXX(
VALUES('Dim Dates'[Month w/Year]);
[ACTUAL]
)
VAR var_BUD =
MAXX(
VALUES('Dim Dates'[Month w/Year]);
[BUDGET]
)
RETURN
MAX(var_ACT; var_BUD) * 1 // der Faktor dient zur Steuerung der Belegung der Diagrammfläche
Grundsätzlich funktioniert die MAXX() Berechnung so, daß im ersten Berechnungsschritt eine Tabelle mit den Monaten sowie den ACTUAL bzw. BUDGET Werten je Monat erzeugt wird und im zweiten Schritt der Maximalwert dieser Datenreihe ermittelt wird. Auf der Total Ebene des Matrix Visuals - dieses dient nur zur Veranschaulichung - wird damit der größte Monatswert der beiden Datenreihen ACTUAL und BUDGET ermittelt.
Anstelle der VALUES() Tabellenfunktion könnte natürlich auch DISTINCT() oder genauso auch ALLSELECTED() verwendet werden. Die Verwendung von ALL() ist jedoch nicht empfehlenswert, da bei einer direkten Filterung (bspw. mit einem weiteren Slicer) auf das Feld "Month w/Year" die ALL() Funktion diesen Filter ignorieren würde.
Für die Skalierung zählt ausschließlich dieses Berechnungsergebnis auf der Total Ebene, die Berechnungsergebnisse auf der Monatsebene spielen keine Rolle für die Skalierung des Charts. Wichtig ist auch zu sehen, daß die Ermittlungsgranularität des Skalierungsfaktors auf die Granularität der Visualisierung abgestimmt sein muß (hier: "Month w/Year").
Die Y-Achse des Säulendiagramms wird hier bereits mit dem Measure "SCALE Column Chart" gesteuert, auch wenn dieses mit dem Faktor "1" noch nicht optimal abgestimmt ist:
Das Setting erfolgt über die Measure-Steuerung des Einstellungswertes für den Maximalwert der Y-Achse:
Wird der Faktor im Measure jetzt von "1" auf "1,2" erhöht, dann erreichen die Balken nicht mehr den oberen Rand der Diagrammfläche:
Die Bestimmung dieses Faktors hängt in der Praxis von der konkreten Ausgestaltung des Visuals ab (bspw. Aktivierung von Labels, usw.) und kann durch Trial & Error rasch abgeschätzt werden.
Evaluierung
Die aktive Steuerung der Skalierung ist in einem Standardreport von Power BI nicht unbedingt notwendig, doch es lässt sich die Darstellungsqualität damit optimieren. Darüber hinaus gibt es zahlreiche Anwendungsfälle in der Praxis, in denen eine aktive Steuerung der Skalierung dann zwingend notwendig ist:
- Gemeinsame Skalierung von zwei oder mehreren Charts
- Fortgeschrittene Labels (bspw. 2 reihig)
- Integriertes Subdiagramm in ein Hauptdiagramm (über die Funktion "Fehlerindikatoren")
Ein wichtiges praktisches Thema ist die Drilldown-Funktion: diese muß in Visuals mit aktiver Steuerung der Skalierung deaktiviert werden, da sich die Ermittlungsebene im Skalierungsfaktor nicht dynamisch an die Drilldownebene anpassen lässt. Eine Alternative zum Drilldown kann aber mit einem Bookmark- oder Fields-Parameter-Umschalter erreicht werden (allerdings mit deutlichem Mehraufwand).